我不知道如何基于某个种子生成带有重复项的数字列表。
我尝试使用下面的代码,但无法生成重复的数字
random.seed(3340)
test = random.sample(range(100), 100000)
我认为这可以解决问题,但是我收到一条错误消息:“ ValueError:样本大于总体或为负数”
我可以实现一些可以做到这一点的功能,但是我认为如果可以使用一些库,那将是个好主意。
答案 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)]