从M个数中随机取出N个

简介:

看到这样一个题目:在M个数中,随机取出其中的N个,要求等概率。

这应该是一个比较简单的题目,看到题目后的第一想法是:维护一个关于这M个数的集合,然后每次随机从集合中抽一个数,抽N次即可。
等概率显然不是什么问题,当然前提是假设随机函数是等概率的,否则任何方法都免谈了。
对于其中的每一个数,它在每一次不被抽走的概率是:(M-1)/M、(M-2)/(M-1)、...、(M-N)/(M-N-1),到最后还没被抽走的概率就是(M-N)/M,也就是说它会被抽走的概率是N/M。

看到一个网友的解决思路,感觉很有意思:

在M个数中,随机取出其中的N个,那么每个数被选中的概率都是N/M。

对于其中的第一个数字,它被选中的概率是N/M,所以随机生成一个来自(0,1)之间的均匀分布的实数u。
如果u<N/M,则这个数被选中。于是问题简化为:对于剩下的M-1个数,等概率选择其中的N-1个,每个数被选中的概率都是(N-1)/(M-1);
否则,这个数字不被选中。问题简化为:对于剩下的M-1个数,等概率选择其中的N个,每个数被选中的概率都是N/(M-1);

简单分析一下概率:对于这第一个数字,它被选中的概率就是N/M。
对于剩下的M-1个数,任何一个数被选中的概率是: N/M * (N-1)/(M-1) + (1-N/M) * N/(M-1) = N/M. 因此满足题意。

这样的思路让人很受启发……


目录
相关文章
|
Python
df获取最后一行数据
df获取最后一行数据
932 0
|
7月前
|
SQL 机器学习/深度学习 前端开发
【SQL周周练】一句 SQL 如何帮助 5 个人买到电影院最好的座位?
这是一道我改编的 SQL 题目,不仅需要你输出连续的空座,还需要你去计算观影的最优位置。经过改编后,我相信是蛮有趣味的一道题。
193 24
|
9月前
|
自然语言处理 负载均衡 数据可视化
100万免费 Token!DeepSeek-R1满血版即刻拥有
随着DeepSeek在线使用需求的迅猛增长,服务器资源紧张和响应延迟问题日益突出。本文推荐使用百炼大模型服务平台,提供DeepSeek满血版调用的平替方案,支持OpenAI SDK或HTTP方式快速体验。DeepSeek-R1与DeepSeek-V3分别有100万免费Token,另有多款开源Qwen及Llama蒸馏模型支持调用。通过百炼平台,无需自行搭建基础设施,具备负载均衡和自动扩缩容机制,确保API调用稳定。搭配Chatbox可视化界面客户端,简化调用流程,预估费用为0元,免费试用额度耗尽后预计成本不超过1元。
|
11月前
|
Kubernetes Linux 虚拟化
VMware Fusion 13.6.2 发布下载,现在完全免费无论个人还是商业用途
VMware Fusion 13.6.2 发布下载,现在完全免费无论个人还是商业用途
1956 13
VMware Fusion 13.6.2 发布下载,现在完全免费无论个人还是商业用途
|
人工智能 JavaScript 数据可视化
Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比
本文对 Cursor AI、v0 和 Bolt.new 三大 AI 编程工具进行了全面比较,分析其各自优势与局限性,帮助开发者在不同工作流中灵活应用。
1263 8
Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
|
人工智能 JavaScript 前端开发
利用 AI 进行代码生成:GitHub Copilot 的实践与反思
【10月更文挑战第23天】本文探讨了GitHub Copilot,一个由微软和OpenAI合作推出的AI代码生成工具,其核心功能包括智能代码补全、多语言支持、上下文感知和持续学习。文章介绍了Copilot在加速开发流程、学习新语言、提高代码质量和减少重复工作等方面的应用,并反思了AI在代码生成中的代码所有权、安全性和技能发展等问题。最后,文章提供了实施Copilot的最佳实践,强调了在使用AI工具时保持对代码的控制和理解的重要性。
|
机器学习/深度学习 人工智能 搜索推荐
详细探讨AI在个性化教育平台中学习路径推荐的应用
详细探讨AI在个性化教育平台中学习路径推荐的应用
|
存储 安全 Java
深度长文解析SpringWebFlux响应式框架15个核心组件源码
以上是Spring WebFlux 框架核心组件的全部介绍了,希望可以帮助你全面深入的理解 WebFlux的原理,关注【威哥爱编程】,主页里可查看V哥每天更新的原创技术内容,让我们一起成长。
677 3
下一篇
oss云网关配置