如何基于Python中的特定种子生成具有重复项的数字列表

时间:2019-05-19 02:27:36

标签: python quicksort

我不知道如何基于某个种子生成带有重复项的数字列表。

我尝试使用下面的代码,但无法生成重复的数字

random.seed(3340)
test = random.sample(range(100), 100000)

我认为这可以解决问题,但是我收到一条错误消息:“ ValueError:样本大于总体或为负数”

我可以实现一些可以做到这一点的功能,但是我认为如果可以使用一些库,那将是个好主意。

3 个答案:

答案 0 :(得分:2)

random.sample个样本,无需替换。 random.choices带有替换样品,这是您想要的:

In [1]: import random

In [2]: random.choices([1, 2], k=10)
Out[2]: [2, 1, 1, 2, 1, 1, 1, 2, 2, 1]

您也可以使用numpy做到这一点:

In [3]: import numpy

In [4]: numpy.random.randint(0, 10, 100)
Out[4]:
array([7, 6, 3, 3, 8, 5, 9, 5, 4, 5, 1, 5, 8, 2, 4, 3, 9, 3, 5, 7, 9, 6,
       2, 3, 5, 8, 4, 9, 3, 3, 0, 8, 4, 4, 7, 2, 8, 4, 4, 9, 1, 1, 7, 1,
       3, 1, 1, 5, 1, 7, 5, 1, 9, 6, 0, 4, 8, 9, 9, 4, 7, 6, 0, 5, 1, 8,
       4, 8, 9, 8, 5, 4, 3, 0, 2, 6, 4, 4, 2, 3, 0, 6, 7, 3, 5, 9, 3, 7,
       4, 1, 7, 6, 7, 8, 7, 6, 0, 5, 1, 0])

答案 1 :(得分:0)

我不知道您是否正在寻找一个更简单的解决方案,但是您可以在生成器中使用索引:

population = list(range(100))
sample = [population[random.randint(0,99) for _ in range(100000)]]

答案 2 :(得分:0)

您也可以使用此理解:

random.seed(3340)
test = [random.randrange(100) for _ in  range(100000)]