Как создать список случайных чисел, которые не имеют повторов, но в определенном диапазоне с Python? - PullRequest
0 голосов
/ 27 января 2020

Мне на самом деле нужно сгенерировать кучу списков случайных чисел в диапазоне от 1 до 5. Я знаю, как создать единый список случайных чисел в диапазоне от 1 до 5 с модулем перемешивания, но что, если я хочу куча таких штучек? Понятия не имею, использовать l oop, кто-нибудь может помочь? Многие ценят ~

import numpy as np
import random as rd
hh = list(range(1,6))
rd.shuffle(hh)

print(hh)

Я просто хочу повторить этот код 500 раз и получить собранный вывод

Ответы [ 3 ]

0 голосов
/ 27 января 2020

В стандартной библиотеке Python есть random.sample () , которая решает проблему напрямую:

>>> from random import sample
>>> sample(range(2_400, 8_800, 100), k=10)
[6200, 7000, 3600, 7800, 6900, 5500, 4000, 7700, 5200, 2800]

Образец () Функция выбирает значения из диапазона без замены.

Чтобы разрешить повторы (выбор с заменой), используйте random.choices () :

>>> from random import choices
>>> choices(range(2_400, 8_800, 100), k=10)
[2500, 5400, 7600, 2500, 3500, 2600, 5400, 5200, 3700, 7600]

Для numpy используйте numpy .random.choice () . Есть варианты с или без замены.

0 голосов
/ 27 января 2020

Вы можете использовать numpy

num_range = np.random.default_rng()
num_range.choice(10, size=5, replace=False)

array([7, 8, 4, 3, 0], dtype=int64)
0 голосов
/ 27 января 2020
import random

f = []
for i in range(5):
    f.append(random.sample(range(5), 5))
print(f)

или

x = [random.sample(range(5), 5) for i in range(5)]
print(x)


[[3, 0, 1, 4, 2], [4, 2, 0, 3, 1], [4, 0, 1, 3, 2], [3, 0, 1, 2, 4], [4, 3, 2, 0, 1]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...