numpy中的非重复随机数

时间:2011-12-14 13:56:16

标签: random numpy numbers non-repetitive

我的问题是:如何在numpy中生成非重复的随机数?

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

5 个答案:

答案 0 :(得分:72)

我认为numpy.random.sample现在无法正常工作。这是我的方式:

import numpy as np
np.random.choice(range(20), 10, replace=False)

答案 1 :(得分:63)

如果您不坚持使用NumPy,可以使用标准库中的random.sample()

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

使用NumPy,您必须使用numpy.random.shuffle()并切片:

a = numpy.arange(20)
numpy.random.shuffle(a)
print a[:10]

答案 2 :(得分:0)

您也可以通过排序获得此信息:

random_numbers = np.random.random([num_samples, max_int])
samples = np.argsort(random_numbers, axis=1)

答案 3 :(得分:0)

可以使用Python集列表转换。可以从0到20之间获得10个唯一数字,如下所示:

import numpy as np
import random
unique_numbers=set()
while(len(unique_numbers)<10):
    unique_numbers.add(np.random.randint(0,20))

unique_numbers=list(unique_numbers)
random.shuffle(unique_numbers)
print(unique_numbers)

答案 4 :(得分:-3)

只需生成一个包含所需数字范围的数组,然后通过重复交换数组中第0个元素的随机数组来对其进行随机播放。这会产生一个不包含重复值的随机序列。