Python-如何生成具有按位概率的随机数?

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 +=

我需要计算出在指定时间内衰变的原子数。我得到了氡-222的半衰期,并由此计算出任何一个原子在1分钟内衰变的概率


如果我有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