python – 生成值而不是调用随机的概率函数
发布时间:2020-12-20 12:08:54 所属栏目:Python 来源:网络整理
导读:在我的 python代码中,有一些地方我有一个人口,每个人都有发生某种事情的机会,但我只需要受影响的人数. amount = 0population = 500chance = 0.05for p in range(population): if random.random() chance: amount += 1 我的直觉告诉我,除了调用random.random(
在我的
python代码中,有一些地方我有一个人口,每个人都有发生某种事情的机会,但我只需要受影响的人数.
amount = 0 population = 500 chance = 0.05 for p in range(population): if random.random() < chance: amount += 1 我的直觉告诉我,除了调用random.random()500次之外,必须有一种不那么强力的方法.我不知道的一些数学或统计术语或功能. amount = population * chance * random.random() 根据我的需要变化太多了. 解决方法
诀窍不是执行离散循环,而是使用随机模型(二项分布)来简化它.
对于特殊值范围,您可以将分布转换为另一个.对于大量实验(在您的情况下n = 500),二项分布为can be approximated to a normal distribution. 如果你不想安装numpy,你可以近似这个. 对于您的情况(n = 500,p = 0.05): http://mathurl.com/pswbndd.png http://mathurl.com/ovqsgmu.png 有了这个,你可以再次使用随机模块: random.normalvariate(25,4.87340) 我会推荐使用numpy的解决方案.它应该是确切且最快的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |