Python随机数生成器的正确用法应该是什么

写这段代码的起因是一道很简单的数学题:

clipboard.png

数学上的做法如下:

clipboard.png

在用笔算得出正确结果(4.5^100)后,想用Python写一段代码进行模拟以验证,代码如下:

import random
import datetime
T=100
ex=0
random.seed(datetime.datetime.now())
while T>0:
    y=1
    count=100
    while count>0:
        x=random.randint(0,9)
        y*=x
        count-=1
    ex+=y
    T-=1
ex/=100
print(ex)

然而每次输出的结果都是0,所以。。。Python的随机数生成器应该如何正确使用?

阅读 5.4k
3 个回答

期望值是大量实验的平均值,你这个是只是单次实验,你几次都得到0是因为,方差很大,结果主要分布在大数和0。结果不为0的概率也就是100个随机数中不出现0的概率,这就是0.9的100次方,大概0.000026,根据大数定理(还是什么其他定理来着,这学期的数理统计和概率论挂了?)可以算出你能模拟出期望所需的最少需要进行的实验次数

你随机数没用错,是你的程序有问题。你的y*=x这行但凡只要有一个x随机到0,最后得出的y就是0,你循环100次x肯定会随机到0的。这是小学乘法题啊同学

新手上路,请多包涵

建议再看一下大数定理,你这里的一百次只是一次实验,你需要一个外层循环。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题