Генерация случайных целых чисел от 0 до 9 - PullRequest
1151 голосов
/ 22 октября 2010

Как генерировать случайные целые числа от 0 до 9 (включительно) в Python?

Например, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Ответы [ 18 ]

1836 голосов
/ 22 октября 2010

Попробуйте:

from random import randrange
print(randrange(10))

Подробнее: http://docs.python.org/library/random.html#random.randrange

331 голосов
/ 04 мая 2013
import random
print(random.randint(0,9))

random.randint(a, b)

Вернуть случайное целое число N, такое что a <= N <= b. </p>

Документы: https://docs.python.org/3.1/library/random.html#random.randint

107 голосов
/ 22 октября 2010

Попробуйте это:

from random import randrange, uniform

# randrange gives you an integral value
irand = randrange(0, 10)

# uniform gives you a floating-point value
frand = uniform(0, 10)
64 голосов
/ 26 ноября 2013
from random import randint

x = [randint(0, 9) for p in range(0, 10)]

Генерирует 10 псевдослучайных чисел в диапазоне от 0 до 9 включительно.

47 голосов
/ 06 декабря 2016

Модуль secrets является новым в Python 3.6.Это лучше, чем модуль random для криптографии или безопасности.

Для случайной печати целого числа в диапазоне от 0 до 9:

from secrets import randbelow
print(randbelow(10))

подробности см. PEP 506 .

25 голосов
/ 29 октября 2015

Попробуйте через random.shuffle

>>> import random
>>> nums = [x for x in range(10)]
>>> random.shuffle(nums)
>>> nums
[6, 3, 5, 4, 0, 1, 2, 9, 8, 7]
21 голосов
/ 02 февраля 2017

Выберите размер массива (в этом примере я выбрал размер 20). А затем используйте следующее:

import numpy as np   
np.random.randint(10, size=(1, 20))

Вы можете увидеть вывод следующей формы ( разные случайные целые числа будут возвращаться каждый раз, когда вы его запускаете; следовательно, вы можете ожидать, что целые числа в выходном массиве будут отличаться от приведенного ниже примера ).

array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])
16 голосов
/ 03 июня 2017

В случае непрерывных чисел randint или randrange, вероятно, являются лучшим выбором, но если у вас есть несколько различных значений в последовательности (т. Е. list), вы можно также использовать choice:

>>> import random
>>> values = list(range(10))
>>> random.choice(values)
5

choice также работает для одного элемента из непрерывного образца:

>>> values = [1, 2, 3, 5, 7, 10]
>>> random.choice(values)
7

Если вам это нужно, «криптографически сильный», есть также secrets.choice в Python 3.6 и новее:

>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2
12 голосов
/ 12 января 2017

, если вы хотите использовать numpy, используйте следующее:

import numpy as np
print(np.random.randint(0,10))
10 голосов
/ 22 сентября 2017

Исходный вопрос подразумевает генерацию кратных случайных целых чисел.

Как я могу генерировать целые числа от 0 до 9 (включительно) в Python?

Однако многие ответы показывают только, как получить одно случайное число, например, random.randint и random.choice.

Несколько случайных целых чисел

Для ясности, вы все еще можете генерировать несколько случайных чисел, используя эти методы, просто повторяя N times:

import random


N = 5

[random.randint(0, 9) for _ in range(N)]
# [9, 7, 0, 7, 3]

[random.choice(range(10)) for _ in range(N)]
# [8, 3, 6, 8, 7]

Образец случайных целых чисел

В некоторых публикациях показано, как сгенерировать несколько случайных целых чисел. 1 Вот несколько вариантов, которые касаются подразумеваемого вопроса:

random.sample возвращает k уникальные выборки из совокупности (без замены): 2

random.sample(range(10), k=N)
# [4, 5, 1, 2, 3]

В Python 3.6 random.choices возвращает k выборок из совокупности (с заменой):

random.choices(range(10), k=N)
# [3, 2, 0, 8, 2]

См. Также этот пост с использованием numpy.random.choice.

1 А именно @Джон Лоуренс Аспден, @ST Mohammed, @SiddTheKid, @ user14372, @zangw и др.

2 @ prashanth упоминает этот модуль, показывая одно целое число.

...