Создание и итерация 2d массива в Ruby

Поскольку Python3.6 существует метод choices из модуля random .

Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.0.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import random

In [2]: random.choices(
...:     population=[['a','b'], ['b','a'], ['c','b']],
...:     weights=[0.2, 0.2, 0.6],
...:     k=10
...: )

Out[2]:
[['c', 'b'],
 ['c', 'b'],
 ['b', 'a'],
 ['c', 'b'],
 ['c', 'b'],
 ['b', 'a'],
 ['c', 'b'],
 ['b', 'a'],
 ['c', 'b'],
 ['c', 'b']]

И люди также упоминали, что есть numpy.random.choice , которые поддерживают весы, НО не поддерживают 2d массивы и т. Д.

Итак, вы можете получить все, что захотите (см. обновление) с помощью встроенного random.choices, если у вас есть 3.6.x Python .

UPDATE: As @roganjosh , random.choices не может возвращать значения без замены, как упоминалось в docs :

Вернуть a k (g15) blockquote>

И блестящий ответ @ ronan-paixão гласит, что numpy.choice имеет аргумент replace, который управляет этим поведением.

13
задан Andrew Grimm 14 October 2012 в 21:55
поделиться