Arranjo de uso do módulo aleatório do Python

Os números aleatórios desempenham um papel importante no campo da ciência da computação e são usados ​​para simular aleatoriedade do mundo real, geração de dados, criptografia e muitos outros campos. O módulo random em Python oferece diversas funções de geração de números aleatórios. Este artigo resume o uso do módulo random.

Módulo aleatório do Python

Precauções

  • Pseudorandomness : Python usa o módulo random para gerar números pseudoaleatórios de várias distribuições . Números aleatórios gerados por computador são todos números pseudo-aleatórios, que são gerados por um algoritmo determinístico e apenas parecem aleatórios. Se for necessário um alto grau de aleatoriedade, são necessárias fontes adicionais de aleatoriedade.

  • Diferentes tipos de aleatoriedade : Em cenários como simulação, criptografia, etc., é necessário prestar atenção a diferentes tipos de requisitos de aleatoriedade. Se você acessar os documentos do Python para obter a documentação deste módulo, verá um aviso:

    insira a descrição da imagem aqui
    Obviamente, o módulo aleatório é adequado apenas para necessidades gerais de números aleatórios. O módulo aleatório usa o algoritmo Mersenne Twister para gerar números aleatórios. Mas esse algoritmo é completamente determinístico e, para cenários que exigem aleatoriedade de alta intensidade, como criptografia, o módulo secrets deve ser usado.

Funções internas do módulo aleatório do Python

Abaixo estão as várias funções integradas no módulo aleatório. Essas funções podem gerar números pseudo-aleatórios em diferentes cenários:

insira a descrição da imagem aqui
A lista a seguir contém breves descrições das funções geradoras de números aleatórios acima:

Nome da função descrever
randint(a, b) gerar um [a, b]número inteiro aleatório no intervalo
randrange(start, stop, step) gerar um stepelemento aleatório em uma sequência de inteiros incrementados por
random() Gere um número de ponto flutuante aleatório no intervalo [0,0, 1,0)
uniform(a, b) Gera um [a, b)número de ponto flutuante aleatório no intervalo
gauss(mu, sigma) Gere um número de ponto flutuante aleatório que esteja em conformidade com uma distribuição Gaussiana com média mue desvio padrãosigma
sample(population, k) populationSelecione aleatoriamente kelementos da sequência sem repetição
choice(sequence) Selecione aleatoriamente um elemento de uma sequência
shuffle(sequence) Embaralhe aleatoriamente a ordem dos elementos em uma sequência
seed(a=None) Inicialize a semente do gerador de números aleatórios usado para reproduzir a sequência aleatória

Abaixo estão descrições mais detalhadas e exemplos dessas funções.

randint()

Esta função gera inteiros entre o intervalo especificado. Aceita dois parâmetros xxx yyyy e gerar inteiroiii , 使得x < = i < = yx <= i <= yx<=eu<=y

import random

a = random.randint(3, 6)
print(a)	# 输出:3

randrange()

Esta função gera um elemento aleatório em uma sequência de inteiros stepcom um tamanho de passo de . starte stopsão intervalos, e o intervalo de valores é [start, stop). Se stepo parâmetro for omitido, o padrão será 1.

import random

a = random.randrange(1, 10, 2)
print(a)	# 输出:7

aleatório()

Esta função gera um [0.0, 1.0)número de ponto flutuante aleatório no intervalo. Todos os números neste intervalo têm probabilidade igual.

import random

a = random.random()
print(a)	# 输出:0.6427979778735594

uniforme()

Esta função gera um [a, b)número de ponto flutuante aleatório no intervalo. Semelhante random(), mas você pode especificar um intervalo.

import random

a = random.uniform(3, 6)
print(a)	# 输出:3.512451152441262

gauss(mu, sigma)

Esta função gera um número de ponto flutuante aleatório que segue uma distribuição gaussiana (também conhecida como distribuição normal). mué a média e sigmaé o desvio padrão, controlando a forma da distribuição.

import random

a = random.gauss(3, 0.5)
print(a)	# 输出:2.9743970359818612

amostra()

Se você deseja vários elementos aleatórios em uma sequência, pode usar sample(). Leva dois argumentos populatione k, onde populationé uma sequência e ké um número inteiro. A função então populationseleciona aleatoriamente kos elementos da sequência e os retorna como uma lista. Escolha não repetir.

import random

seq = (12, 33, 67, 55, 78, 90, 34, 67, 88)
a = random.sample(seq, 5)
print(a)	# 输出:[88, 78, 67, 34, 33]

escolha (sequência)

Você pode usar esta função se quiser selecionar elementos aleatórios de uma sequência específica. Leva um parâmetro - sequence. Ele retorna um elemento aleatório de uma sequência.

import random

seq = (12, 33, 67, 55, 78, 90, 34, 67, 88)
a = random.choice(seq)
print(a)	# 输出:88

Perceber: random.choice(seq)Não equivalente a random.sample(seq, 1), o primeiro retorna um elemento e o último retorna uma lista.

embaralhar (sequência)

Esta função leva um parâmetro - uma lista. Em seguida, embaralha os elementos da lista e retorna.

import random

a = [10, 20, 30, 40, 50]
random.shuffle(a)
print(a)	# 输出:[30, 10, 20, 40, 50]

seed(a=Nenhuma)

Esta função pode ser usada quando a mesma sequência de números aleatórios precisa ser gerada várias vezes. Leva um parâmetro - o valor de semente. Esse valor inicializa o gerador de números pseudo-aleatórios. Sempre que a função for chamada com o mesmo valor de semente seed(), ela produzirá exatamente a mesma sequência de números aleatórios, o que é útil para casos em que é necessário reproduzir resultados aleatórios.

import random
# seed value = 3
random.seed(3)
for i in range(3):
    print(random.random(), end = ' ')

print('\n')

# seed value = 8
random.seed(8)
for i in range(3):
    print(random.random(), end = ' ')

print('\n')

# seed value again = 3
random.seed(3)
for i in range(3):
    print(random.random(), end = ' ')

print('\n')

Saída:
0,23796462709189137 0,5442292252959519 0,36995516654807925

0,2267058593810488 0,9622950358343828 0,12633089865085956

0,23796462709189137 0,5442292252959519 0,36995516654807925

Pode-se ver que para semente = 3, a mesma sequência é gerada todas as vezes.

Acho que você gosta

Origin blog.csdn.net/a2360051431/article/details/132308513
Recomendado
Clasificación