use - random.sample python




Gere inteiros aleatórios entre 0 e 9 (14)

Como posso gerar inteiros aleatórios entre 0 e 9 (inclusive) em Python?

Por exemplo, 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9


A melhor maneira é usar a função aleatória de importação

import random
print(random.sample(range(10), 10))

ou sem qualquer importação de biblioteca:

n={} 
for i in range(10):
    n[i]=i

for p in range(10):
    print(n.popitem()[1])

aqui o popitems remove e retorna um valor arbitrário do dicionário n .


A questão original implica gerar múltiplos inteiros aleatórios.

Como posso gerar inteiros entre 0 e 9 (inclusive) no Python?

No entanto, muitas respostas mostram apenas como obter um número aleatório, por exemplo, random.randint e random.choice .

Vários inteiros aleatórios

Para maior clareza, você ainda pode gerar vários números aleatórios usando essas técnicas, simplesmente iterando N vezes:

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]

Amostra de números inteiros aleatórios

Algumas postagens demonstram como gerar nativamente vários inteiros aleatórios. 1 Aqui estão algumas opções que abordam a questão implícita:

random.sample retorna k seleções exclusivas de uma população (sem substituição): 2

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

No Python 3.6, random.choices retorna k seleções de uma população (com substituição):

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

Veja também este post relacionado usando numpy.random.choice .

1 Nomeadamente @John Lawrence Aspden, @ST Mohammed, @SiddTheKid, @ user14372, @zangw, et al.

2 @prashanth menciona este módulo mostrando um inteiro.


Eu tive melhor sorte com isso para o Python 3.6

str_Key = ""                                                                                                
str_RandomKey = ""                                                                                          
for int_I in range(128):                                                                                    
      str_Key = random.choice('0123456789')
      str_RandomKey = str_RandomKey + str_Key 

Basta adicionar caracteres como 'ABCD' e 'abcd' ou '^! ~ = -> <' para alterar o conjunto de caracteres, alterar o intervalo para alterar o número de caracteres gerados.


Eu usei variável para controlar o intervalo

from random import randint 
numberStartRange = 1
numberEndRange = 9
randomNumber = randint(numberStartRange, numberEndRange)
print(randomNumber)

Eu usei a função de impressão para ver os resultados. Você pode comentar se você não precisa disso.


Gerando inteiros aleatórios entre 0 e 9.

import numpy
X = numpy.random.randint(0, 10, size=10)
print(X)

Saída:

[4 8 0 4 9 6 9 9 0 7]

Isso é mais uma abordagem matemática, mas funciona 100% do tempo:

Digamos que você queira usar a função random.random() para gerar um número entre a e b . Para conseguir isso, basta fazer o seguinte:

num = (ba)*random.random() + a;

Claro, você pode gerar mais números.


No caso de números contínuos, randint ou randrange são provavelmente as melhores escolhas, mas se você tiver vários valores distintos em uma sequência (por exemplo, uma list ), você também pode choice :

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

choice também funciona para um item de uma amostra não contínua:

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

Se você precisar "criptograficamente forte", há também um secrets.choice no python 3.6 e mais recente:

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

O módulo de secrets é novo no Python 3.6. Isso é melhor que o módulo random para criptografia ou usos de segurança.

Para imprimir aleatoriamente um número inteiro no intervalo inclusivo 0-9:

from secrets import randbelow
print(randbelow(10))

Para mais detalhes, consulte o PEP 506 .


Se você quiser usar numpy, use o seguinte:

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

Tente isto atravé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]

Você pode tentar isto:

import numpy as np
print ( np.random.uniform(low=0, high=10, size=(15,)) ).astype(int)

>>> [8 3 6 9 1 0 3 6 3 3 1 2 4 0 4]

Notas:

''' np.random.uniform generates uniformly distributed numbers over 
    the half-open interval [low, high).

    .astype(int) casts the numpy array to int data type. 

    I have chosen size = (15,). This will give you a numpy array of length = 15. 
'''

Mais informações em numpy.random.uniform

Mais informações em numpy.ndarray.astype


random.sample é outro que pode ser usado

import random
n = 1 # specify the no. of numbers
num = random.sample(range(10),  n)
num[0] # is the required number


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

Para obter uma lista de dez amostras:

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






integer