在this post之后,我可以生成具有固定总和的随机整数。但是,我要避免重复的数字(例如下面的示例中的20
):
import numpy as np
_sum = 100
n = 5
rnd_array = np.random.multinomial(_sum, np.ones(n)/n, size=1)[0]
rnd_array
>>> array([20, 24, 20, 21, 15])
我该如何实现?
答案 0 :(得分:4)
random.sample
返回一个唯一值列表(see the docs。)这样称呼:
sample = random.sample(range(100), 5)
编辑:为了使用它来获取固定的总和,我建议阅读this thread,其中重要的代码是:
from random import*
def f(n,s):
r=min(s,1)
x=uniform(max(0,r-(r-s/n)*2),r)
return n<2and[s]or sample([x]+f(n-1,s-x),n)