Um tutorial rápido e direto ao ponto que demonstra como trabalhar e gerar números aleatórios – randômicos, em linguagem C.

Você pode usar as mesmas funções para trabalhar com C++.

A motivação veio da necessidade de meus alunos aprendizes de programação, principalmente de cursos não ligados diretamente com informática, como os da Engenharia Elétrica

sim, já ensinei muita Lógica de Programação em C para alunos da Engenharia Elétrica 😀.

Leia Números aleatórios, randômicos e Pseudo-aleatoriedade – conceitos fundamentais sobre a geração de números aleatórios

Números aleatórios, randômicos em C

Para gerar números pseudo-aleatórios em C podemos utilizar a função rand() da biblioteca stdlib.h.

Cada chamada da função produz um número aleatório no intervalo fechado 0..RAND_MAX.

A constante RAND_MAX está definida no arquivo-interface stdlib.h.

Esta função utiliza uma “semente” para gerar sua sequência aleatória, portanto, se chamada sem a criação de seed – uma semente, diferente a cada execução, seu resultado será sempre o mesmo, isto é, sempre iniciará com o mesmo número “aleatório” e apresentará a mesma sequência numérica a cada chamada, portanto, não esqueça, sempre chame a função rand após a função srand.

Para ficar mnemônico, rand é a abreviatura de “random” que significa aleatório em inglês. A função srand seria a abreviatura de “seed random” ou semente aleatória – em tradução literal.

Para gerar esta semente chamamos a função srand() passando como parâmetro um valor de base. Este valor pode ser o resultado obtido da função time() que retorna o valor de milissegundos ocorridos no dia.

Código de exemplo

Vamos ao que interessa, a seguir um algoritmo com exemplos de como gerar números aleatórios em linguagem c:

#include <stdio.h>
#include <stdlib.h>
int main ( ) {
   int inteiro, x;

   printf("*** EXEMPLOS PARA USO DA FUCAO RAND ***\n\n");

   inteiro=rand();
   printf("inteiro aleatorio sem geracao de semente: %d\n",inteiro);

   srand(25);
   inteiro=rand();
   printf("inteiro aleatorio com semente fixa: %d\n\n",inteiro);

   srand(time(0));
   inteiro=rand();
   printf("inteiro aleatorio com semente baseada no relógio: %d\n\n",inteiro);

   printf("note que a partir deste ponto, depois que a funcao srand gerou a semente, \n as execucoes mostrarao numeros diferentes\n\n");

   inteiro = rand()%51;
   printf ( "inteiro de 0 a 50: %d\n\n" , inteiro) ;	// utilizar o operador de modulo nos garante que o 
         // resultado do resto de rand pelo divisor 51 eh um numero de
	// 0 a 50

   // simular o rolar de um dado de 6 faces
   printf ( "Simulacao de 3 jogadas para um dado de 6 faces\n\n") ;

   for (x=1; x<=3; x++) {
      inteiro = (rand()%6)+1; 	// como o numero gerado por rand vai de 0 a RAND_MAX, 

      // geramos o resultado de 0 a 5 e somamos 1 para garantir o intervalo de 1 a 6
      printf ("Dado rolado com resultado %d\n", inteiro);
   }

   // simular tres jogadas de cara ou coroa com moeda
   printf ( "Simulacao de cara ou coroa\n\n") ;

   for (x=1; x<=3; x++) {
      inteiro = (rand()%2); 	
      if (inteiro == 0) {
         printf ("Cara\n");
      } else {
	printf ("Coroa\n");
      }
   }

   getchar() ;
}

Se você precisa gerar números verdadeiramente aleatórios uma sugestão é ler o artigo Números aleatórios, randômicos e Pseudo-aleatoriedade, e verificar o serviço de API do RAMDOM.ORG descrito neste artigo.


Mantenha-se atualizado

Não esqueça de me seguir no Twitter e assinar o Canal Mazer.dev no Youtube para receber atualizações de novos artigos, vídeo aulas e cursos gratuitos em desenvolvimento e engenharia de software.

Para mais tutoriais de programação

Laradock, instalação e configuração
Como instalar e configurar o Laradock, que é, como apresentado no artigo introdutório, um projeto para configuração rápida e simples de ambientes de desenvolvimento de sistemas PHP para web, usando Docker. Neste artigo tutorial, veremos mais detalhadamente como instalar e configurar um ambiente Laradock para trabalhar por projeto PHP, isto …
Repositórios de dados abertos para programadores
Awesome Data Table References é um repositório de minha responsabilidade, onde faço curadoria de referências para tabelas de dados abertos de instituições e órgãos brasileiros e mundiais. Sempre que é necessário criar um campos de escolha de municípios, estados brasileiros, buscas por CEP, identificação por raça ou cor, os desenvolvedores …
Laradock – Containers Docker para seu desenvolvimento PHP e Laravel – Introdução
Laradock é um ambiente de desenvolvimento web completo para Docker, que nasceu para atender o desenvolvimento de sistemas Laravel e atualmente provê containers para diversas situações para o desenvolvimento com PHP. Ele oferece suporte a uma variedade de serviços comuns, todos pré-configurados para fornecer um ambiente de desenvolvimento de PHP, …
Números aleatórios, randômicos e Pseudo-aleatoriedade
Os números aleatórios são úteis para uma grande variedade de situações, como gerar chaves de criptografia de dados, simular e modelar fenômenos complexos e para selecionar amostras aleatórias de conjuntos de dados maiores. Números aleatórios também têm sido usados ​​esteticamente, por exemplo, na literatura e na música e para jogos …
Como resolver erro Laravel class not found em php artisan migrate:rollback
Se você está recebendo o erro class not found ao executar o comando php artisan migrate:rollback em um projeto com o framework Laravel, este artigo mostra como resolver o erro e executar o roolback. Migrations Ao trabalhar com migrations, as migrações de bancos de dados no Laravel, principalmente na fase …
Como criar data de Copyright com ano automático em seu blog ou site com PHP, WordPress e Laravel
Adicionar a informação de copyright com o ano atual no rodapé de sites e blogs é importante para passar ao seu público a informação de que o conteúdo que ele encontra está "vivo" e atualizado neste site. É interessante também adicionar o ano de início do site, quanto mais informações …

1 comentário em “Tutorial para geração de números aleatórios (randômicos) em C”

  1. Pingback: Números aleatórios, randômicos e Pseudo-aleatoriedade - MAZER.DEV

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *