Неповторяющееся случайное число в numy - PullRequest
53 голосов
/ 14 декабря 2011

Мой вопрос: как я могу генерировать неповторяющиеся случайные числа в numpy?

list = np.random.random_integers(20,size=(10))

Ответы [ 4 ]

73 голосов
/ 07 августа 2014

Я думаю numpy.random.sample сейчас не работает правильно.Это мой путь:

import numpy as np
np.random.choice(range(20), 10, replace=False)
64 голосов
/ 14 декабря 2011

Если вы не настаиваете на использовании NumPy, вы можете использовать random.sample() из стандартной библиотеки:

print random.sample(range(20), 10)

С NumPy вам придется использовать numpy.random.shuffle()и нарезка:

a = numpy.arange(20)
numpy.random.shuffle(a)
print a[:10]
0 голосов
/ 23 октября 2018

Вы также можете получить это, отсортировав:

random_numbers = np.random.random([num_samples, max_int])
samples = np.argsort(random_numbers, axis=1)
0 голосов
/ 14 декабря 2011

Просто сгенерируйте массив, который содержит необходимый диапазон чисел, затем перетасуйте их, многократно меняя случайный элемент на 0-й элемент в массиве.Это создает случайную последовательность, которая не содержит повторяющихся значений.

...