Numpy’s Random-Mulitnomial: как никогда не получать 0 на выходе?

#python-3.x #numpy

#python-3.x #numpy

Вопрос:

Я пытаюсь создать список / массив значений, которые суммируются до значения, но, похоже, не понимаю, как предотвратить попадание 0 в этот список:

 size = 11
levels = 6
np.random.multinomial(size, np.ones(levels)/levels, size=1)[0]

Output: array([2, 2, 1, 0, 3, 3])
  

Нужно ли будет использовать цикл while для проверки нулей, поскольку в конечном итоге вы можете получить ненулевой результат? Это кажется не очень сложным. Итак, просто интересно, есть ли необычный способ сделать это. Или мне нужно использовать совсем другую функцию вместо numpy.random.multinomial? Спасибо.

Ответ №1:

Вы могли бы компенсировать все на 1:

 size = 11
levels = 6
1   np.random.multinomial(size - levels, np.ones(levels)/levels, size=1)[0]

Output: array([2, 1, 2, 1, 2, 3])
  

Это гарантировало бы по крайней мере одну запись на каждом уровне и случайным образом распределяло остальные образцы.