Избегайте дублирования случайных значений - PullRequest
0 голосов
/ 22 января 2019

После этого поста я могу генерировать случайные целые числа с фиксированной суммой.Однако я хочу избежать повторяющихся чисел (например, 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])

Как мне этого добиться?

1 Ответ

0 голосов
/ 22 января 2019

random.sample возвращает список уникальных значений ( см. Документы .) Он называется так:

sample = random.sample(range(100), 5)

Изменить: Чтобы использовать это, чтобы получить фиксированную сумму, я предлагаю прочитать эту ветку , где важный код:

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)
...