Как создать список чисел с дубликатами на основе определенного семени в Python - PullRequest
0 голосов
/ 19 мая 2019

Я не знаю, как создать список чисел с дубликатами, основанный на определенном семени.

Я пытался использовать приведенный ниже код, но он не может генерировать числа с дубликатами

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

Я думаю, что это может сработать, но я получил сообщение об ошибке "ValueError: образец больше, чем заполнение или отрицательный"

Я мог бы реализовать некоторые функции, которые могут это сделать, но я думаю, что это будетотличная идея, если я могу использовать некоторые библиотеки.

Ответы [ 3 ]

2 голосов
/ 19 мая 2019

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])
0 голосов
/ 19 мая 2019

Вы также можете использовать это понимание:

random.seed(3340)
test = [random.randrange(100) for _ in  range(100000)]
0 голосов
/ 19 мая 2019

Я не знаю, ищите ли вы более простое решение, но вы можете использовать индексацию в генераторе:

population = list(range(100))
sample = [population[random.randint(0,99) for _ in range(100000)]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...