Python-如何生成具有按位概率的随机数?
我需要计算出在指定时间内衰变的原子数。我得到了氡-222的半衰期,并由此计算出任何一个原子在1分钟内衰变的概率Python-如何生成具有按位概率的随机数?,python,random,probability,Python,Random,Probability,我需要计算出在指定时间内衰变的原子数。我得到了氡-222的半衰期,并由此计算出任何一个原子在1分钟内衰变的概率 如果我有x个原子,概率是y,我如何计算1分钟内衰变的原子数 目前我有一个非常低效的函数,见下文,但这可能更容易实现 def Decay(atomno, decayrate): out = 0 for atom in range(atomno): if random.uniform(0,1)<decayrate: out +=
如果我有x个原子,概率是y,我如何计算1分钟内衰变的原子数 目前我有一个非常低效的函数,见下文,但这可能更容易实现
def Decay(atomno, decayrate):
out = 0
for atom in range(atomno):
if random.uniform(0,1)<decayrate:
out += 1
return out
听起来你想从二项分布中得到一个随机数,就像numpy.random.binomial产生的那样 对于数量相当多的原子,这可以近似为正态分布,如下所示:
from random import normalvariate
def binomialvariate(n, p):
"""
Generate random number from a binomial distribution
using a normal-distribution approximation
"""
return normalvariate(n * p, (n * p * (1 - p)) ** 0.5)
用起来像
ATOMS = 1000000
DECAY_PROB = 0.1
for i in range(10):
print(binomialvariate(ATOMS, DECAY_PROB))
给予
这个问题属于Math.SE…如果我有x个原子,概率是y,我如何计算1分钟内衰变的原子数?但是,我的函数不会输出intx*y。我需要它是随机的,就像在现实生活中一样。对不起,我最初的问题措辞很糟糕。我确实在寻找类似的问题,但它们并不是我真正需要的。@Rishav是吗?你…在干嘛?
100307.20222237767
99709.2126851899
99834.51936804672
100085.99501737293
100121.93115561221
100379.9532069239
99848.39057702095
99465.46179311829
100357.77320779095
99990.74240156381