如何创建仅包含唯一值的随机列表?

时间:2017-10-27 07:27:31

标签: python list random

我想创建一个包含100个元素的随机列表。到目前为止,这么好......

示例1:工作正常,因为该函数的范围足够大,不会重复任何值

list = random.sample(range(1,200),100)

示例2:不起作用,因为范围太小(样本大于人口)

list = random.sample(range(50,80),100)

我正在寻找一种方法来创建具有比范围更多的值的随机列表,并且元素存在多次都没有问题。

4 个答案:

答案 0 :(得分:2)

在这种情况下,请不要使用random.sample,而是根据范围内选择的元素构建列表:

import random

[random.randrange(50, 80) for _ in range(100)]

示例输出:

[57,
 52,
 59,
 67,
 52,    # some elements repeat
 64,
 75,
...

答案 1 :(得分:1)

使用numpy random

import numpy as np
np.random.randint(low=3,high=12,size=100)

enter image description here

答案 2 :(得分:0)

查看numpy.choice

fmt

答案 3 :(得分:0)

使用list comprehension + randint

[random.randint(1,200) for _ in range(100)]

看到元素重复计数不是100

In [6]: len(set([random.randint(1,200) for _ in range(100)]))
Out[6]: 76