如何在python中生成随机数字序列?

Ken*_*tov 2 python random

如何产生1,2,3的随机序列,条件是80%的数字将为1,15%将为2和5%将为3?

Jér*_*ôme 7

使用random得到的[0,1随机数)和你的输出映射到该区间.

from random import random

result = []

# Return 100 results (for instance)
for i in range(100):

    res = random()

    if res < 0.8:
        result.append(1)
    elif res < 0.95:
        result.append(2)
    else:
        result.append(3)

return result
Run Code Online (Sandbox Code Playgroud)

这是一个简单的解决方案.您可能希望编写一个更优雅的,允许您在专用结构(列表,字典,...)中指定每个数字的概率,而不是在if/else语句中.

但是,如本回答所示,您可能最好使用专用库.这是scipy的一个例子stats.rv_discrete

from scipy import stats
xk = np.arange(1, 4)
pk = (0.8, 0.15, 0.05)
custm = stats.rv_discrete(name='custm', values=(xk, pk))
# Return 100 results (for instance)
return custm.rvs(size=100)
Run Code Online (Sandbox Code Playgroud)