加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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的解决方案.它应该是确切且最快的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读