写这段代码的起因是一道很简单的数学题:
数学上的做法如下:
在用笔算得出正确结果(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的随机数生成器应该如何正确使用?
期望值是大量实验的平均值,你这个是只是单次实验,你几次都得到0是因为,方差很大,结果主要分布在大数和0。结果不为0的概率也就是100个随机数中不出现0的概率,这就是0.9的100次方,大概0.000026,根据大数定理(还是什么其他定理来着,这学期的数理统计和概率论挂了?)可以算出你能模拟出期望所需的最少需要进行的实验次数
建议再看一下大数定理,你这里的一百次只是一次实验,你需要一个外层循环。。。
你随机数没用错,是你的程序有问题。你的y*=x
这行但凡只要有一个x随机到0,最后得出的y就是0,你循环100次x肯定会随机到0的。这是小学乘法题啊同学