O que são números aleatórios
Os números aleatórios desempenham um papel importante na segurança e na criptografia. Você pode ter usado as sugestões de senha do Google. Funciona com um princípio que é de alguma forma semelhante à geração de números aleatórios.
Números aleatórios são uma sequência de números que não se pode prever, e é um número que é escolhido de um conjunto de números.
Por que precisamos de números aleatórios
Números aleatórios são importantes para operações criptográficas, computação moderna e simulações. Números aleatórios também ajudam a aumentar a segurança do computador. Aqui estão algumas aplicações principais de números aleatórios:
- Números aleatórios usados em algoritmos
- Conteúdos gerados processualmente, como imagens aleatórias, nomes e muitos outros
- Para simulações não determinísticas, como padrão, embaralhamento de dados e padrões climáticos
Como agora entendemos as aplicações básicas do gerador de números aleatórios do ESP32, vamos dar uma olhada no código e gerar alguns números aleatórios.
Função para Gerar Número Aleatório no ESP32
A placa ESP32 contém um gerador de números aleatórios de hardware que usa a função esp_random() .
esp_random() não leva nenhum argumento e nos dá um valor gerado aleatoriamente de 0 a UINT32_MAX (é o valor máximo que um unsigned int pode armazenar dentro dele).
Observação : Uma coisa a lembrar aqui é que o gerador de números aleatórios do hardware ESP32 funciona usando WiFi e Bluetooth. A verdade número aleatório só é gerado quando ambos estão ativados. Se esses dois estiverem desabilitados, o ESP32 só pode gerar um pseudo número . Para mais detalhes, por favor verifique o Documentação de números aleatórios do Espressif ESP32 .
Informação interessante : Uma informação interessante sobre o gerador de números aleatórios do hardware ESP32 é que o ESP32 passou no Dieharder Random Testsuite quando uma amostra de dados de 2 GB é obtida usando o ESP32 quando seu WiFi está ativado. Die Hard é um teste para o gerador de números aleatórios.
Sintaxe
Aqui está a sintaxe da função ESP32 para número aleatório:
Retornar
Esta função retorna um valor aleatório entre 0 e UINT32_MAX.
Código para gerar um número aleatório
Abra o IDE do Arduino e faça o upload do código fornecido no ESP32 para gerar um número aleatório entre 0 e 4294967295 (valor máximo unsigned int).
anular configuração ( ) {Serial.begin ( 115200 ) ; /* Taxa de transmissão definida */
}
loop vazio ( ) {
Serial.println ( '************' ) ;
Serial.print ( 'Número aleatório = ' ) ;
Serial.println ( esp_random ( ) ) ; /* Imprima qualquer número aleatório de 0 para o maior int não assinado */
atraso ( 2000 ) ; /* atraso de 2 segundo */
}
Saída
Depois de carregar o código, podemos ver a saída no monitor serial. Aqui podemos ver que o ESP32 gerou dois números aleatórios diferentes.
Código para gerar um número aleatório entre intervalo específico
Suponha que, se o ESP32 WiFi não estiver ativado, existe uma alternativa para funcionar esp_random() . Podemos usar a função de gerador de números aleatórios do Arduino (aleatória()) .
Usando esta função, podemos gerar qualquer número aleatório em um intervalo especificado.
Abra o Arduino IDE e carregue um determinado código que nos dará um número aleatório entre 10-20.
anular configuração ( ) {Serial.begin ( 115200 ) ; /* Taxa de transmissão definida */
}
loop vazio ( ) {
Serial.println ( '************' ) ;
Serial.print ( 'Número aleatório entre 10 e 20=' ) ; /* Imprima qualquer número aleatório entre 10 e vinte */
Serial.println ( aleatória ( 10 , vinte ) ) ;
atraso ( 2000 ) ; /* atraso de 2 segundo */
}
Saída
A seguinte saída pode ser vista no monitor serial: um número aleatório é gerado a cada 2 segundos.
Cobrimos com sucesso as funções que o ESP32 usou para gerar números aleatórios.
Conclusão
Números aleatórios desempenham um papel importante em probabilidade e estatística. Também é útil em criptografia de segurança e operações criptográficas. Esta lição irá guiá-lo na geração de diferentes números aleatórios. Também podemos definir um intervalo para obter um número aleatório.