Advertisement

基本的概率题

阅读量:

从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)

还没有任何评论哟~