我的问题是:如何在numpy中生成非重复的随机数?
list = np.random.random_integers(20,size=(10))
答案 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个元素的随机数组来对其进行随机播放。这会产生一个不包含重复值的随机序列。