-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrandom_exemplo.py
More file actions
65 lines (49 loc) · 2.8 KB
/
random_exemplo.py
File metadata and controls
65 lines (49 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""
O módulo aleatório fornece um rápido gerador de números pseudoaleatórios
baseado no algoritmo Mersenne Twister.
"""
import random
import time
# A função random() retorna o próximo valor aleatório de ponto flutuante da sequência gerada.
# Todos os valores de retorno estão dentro do intervalo 0 <= n <1.0.
print(f'1 - random: {random.random()}')
# Para gerar números em um intervalo numérico específico, use uniforme().
print(f'1 - uniform: {random.uniform(10, 100)}')
"""
random() produz valores diferentes cada vez que é chamado e tem um período muito grande
antes de repetir qualquer número. Isso é útil para produzir valores ou variações exclusivas,
mas há momentos em que é útil ter o mesmo conjunto de dados disponível para ser processado
de maneiras diferentes. Uma técnica é usar um programa para gerar valores aleatórios e
salvá-los para serem processados por uma etapa separada. Porém, isso pode não ser prático
para grandes quantidades de dados, então random inclui a função seed() para inicializar o
gerador pseudo-aleatório, de modo que produza um conjunto esperado de valores.
O valor da seed controla o primeiro valor produzido pela fórmula usada para produzir números
pseudo-aleatórios e, como a fórmula é determinística, também define a sequência completa
produzida após a alteração da semente. O argumento para seed() pode ser qualquer objeto hash.
O padrão é usar uma fonte de aleatoriedade específica da plataforma, se houver uma disponível.
Caso contrário, a hora atual é usada.
"""
random.seed(2)
print(f'1 - seed: {random.random()}')
# random() gera números de ponto flutuante. É possível converter os resultados em números inteiros,
# mas usar randint() para gerar números inteiros diretamente é mais conveniente.
print(f'1 - randint: {random.randint(20, 30)}')
# randrange() é uma forma mais geral de selecionar valores de um intervalo.
print(f'1 - randrange: {random.randrange(10, 1000, 45)}')
# random inclui uma classe Random para gerenciar o estado interno de vários geradores de números aleatórios
random1 = random.Random()
print(f'2 - random: {random1.random()}')
seed = time.time()
random2 = random.Random(seed)
print(f'2 - random: {random2.random()}')
"""
Alguns sistemas operacionais fornecem um gerador de números aleatórios que tem acesso a
mais fontes de entropia que podem ser introduzidas no gerador. random expõe esse recurso
por meio da classe SystemRandom, que tem a mesma API que Random, mas usa os.urandom() para
gerar os valores que formam a base de todos os outros algoritmos.
"""
random3 = random.SystemRandom()
print(f'3 - random: {random3.random()}')
seed = time.time()
random4 = random.SystemRandom(seed)
print('4 - random: {random4.random()}')