随机地从n个数中选取m个数。要求每个元素被选中的概率相等。(Java)
写一个函数,随机地从大小为n的数组中选取m个整数。要求每个元素被选中的概率相等?分析:这道题目和随机洗牌算法类似,只需要随机选取1个元素, 然后在剩下的元素里面随机选取下一个元素,不断这样操作即可。这样做能保证每个元素选中的概率一样吗?也就是选中每个元素的概率都是1/n? 答案是YES,让我们来做一下简单的计算。选第1个元素:在n个中随机选,因此概率为1/n选第2个元素:在剩下的n-1个中随机选:1/(n-1),由于第1次没有选中它, 而是在另外n-1个中选:(n-1)/n,因此概率为:(n-1)/
原创
2021-10-31 18:18:14 ·
2331 阅读 ·
1 评论