基本的概率题
发布时间
阅读量:
阅读量
从n个数中生成m个不重复的随机数
import random
for i in range(n):
x = random.randint(n-i)
if x < m:
print(i)
m -= 1
通过该for循环执行n次,并在满足特定条件时输出i的值,可以得出,输出m个不同数值的要求已被达成。这是因为每次输出的i值均不相同,而m则确保程序在完成m次输出后终止循环。当i=0时,randint()函数的取值范围为0到n-1,共计n个数值。此时若x小于m,则i=0会被输出,因此i=0被输出的概率为m/n;当i=1时,randint()的取值范围为0到n-2,共n-1个数值。若i=0未被输出,则m–操作未被执行,此时i=1被输出的概率为m/(n-1);若i=0已被输出,则m减去1变为m-1,此时i=1被输出的概率则为(m-1)/(n-1)。根据概率论的相关知识可知,在这种情况下i=1被输出的概率计算公式为P=(1-m/n)×(m/(n-1)) + m/n×((m-1)/(n-1)) = m/n;以此类推可得,每个数值被输出的概率均为m/n。
上题中如果n的大小不确定(可以认
全部评论 (0)
还没有任何评论哟~
