Pregunta Generar enteros aleatorios entre 0 y 9


¿Cómo puedo generar enteros aleatorios entre 0 y 9 (inclusive) en Python?

es decir 0, 1, 2, 3, 4, 5, 6, 7, 8, 9


885
2017-10-22 12:48


origen


Respuestas:


Tratar:

from random import randint
print(randint(0, 9))

Más información: https://docs.python.org/3/library/random.html#random.randint


1433
2017-10-22 12:51



import random
print(random.randint(0,9))

random.randint(a, b)

Devuelve un entero aleatorio N tal que a <= N <= b.

Documentos: https://docs.python.org/3.1/library/random.html#random.randint


283
2018-05-04 17:13



Prueba esto:

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)

87
2017-10-22 12:49



from random import randint

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

Esto genera 10 enteros pseudoaleatorios en el rango de 0 a 9 inclusive.


51
2017-11-26 17:39



los secrets el módulo es nuevo en Python 3.6. Esto es mejor que el random módulo para criptografía o usos de seguridad.

Para imprimir aleatoriamente un entero en el rango inclusivo 0-9:

from secrets import randbelow
print(randbelow(10))

Para más detalles, ver PEP 506.


33
2017-12-06 10:29



Prueba esto a través de 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]

18
2017-10-29 09:13



Elija el tamaño de la matriz (en este ejemplo, he elegido el tamaño para ser 20). Y luego, usa lo siguiente:

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

Puede esperar ver un resultado de la siguiente forma (diferentes números enteros aleatorios serán devueltos cada vez que lo ejecute; por lo tanto, puede esperar que los enteros en la matriz de salida difieran del ejemplo dado a continuación)

array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])

12
2018-02-02 06:35



En caso de números continuos randint o randrange son probablemente las mejores opciones, pero si tiene varios valores distintos en una secuencia (es decir, list) también podrías usar choice:

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

choice también funciona para un artículo de una muestra no continua:

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

Si lo necesita "criptográficamente fuerte", también hay un secrets.choice en python 3.6 y más reciente:

>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2

11
2018-06-03 01:45



si quiere usar numpy, entonces use lo siguiente:

import numpy as np
print(np.random.randint(0,10))

8
2018-01-12 03:12



La pregunta original implica generar múltiple enteros aleatorios.

¿Cómo puedo generar enteros entre 0 y 9 (inclusive) en Python?

Sin embargo, muchas respuestas solo muestran cómo obtener uno número aleatorio, p. random.randint y random.choice.

Múltiples enteros aleatorios

Para mayor claridad, aún puedes generar múltiples números aleatorios usando esas técnicas simplemente iterando N veces:

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]

Muestra de enteros aleatorios

Algunas publicaciones demuestran cómo generar de forma nativa múltiple enteros aleatorios.1  Aquí hay algunas opciones que abordan la pregunta implícita:

random.sample devoluciones k selecciones únicas de una población (sin reemplazo):2

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

En Python 3.6, random.choices devoluciones k selecciones de una población (con reemplazo):

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

Ver también esta publicación relacionada utilizando numpy.random.choice.

1Es decir, @John Lawrence Aspden, @S T Mohammed, @SiddTheKid, @ user14372, @zangw, et al.

2@prashanth menciona que este módulo muestra un entero.


6
2017-09-22 04:29



>>> import random
>>> random.randrange(10)
3
>>> random.randrange(10)
1

Para obtener una lista de diez muestras:

>>> [random.randrange(10) for x in range(10)]
[9, 0, 4, 0, 5, 7, 4, 3, 6, 8]

5
2017-08-10 15:48