quinta-feira, 25 de julho de 2013

Como gerar um número aleatório em C / C++?


Eae pessoal, beleza? Aqui é o Victor! Hoje eu estou aqui com um tutorial de C / C++ pra vocês! Como estou cursando Análise e Desenvolvimento de Sistemas não, não vou consertar sua impressora achei que deveria compartilhar um pouco do conhecimento que estou absorvendo com vocês, bloggers do CyberTech! \o

O tutorial de hoje é bem simples, mas, muito versátil, pois, tem várias utilizações práticas.

Como sortear números em C / C++?

Como eu disse acima, é bastante simples, visto que utiliza apenas algumas funções.
Começarei o tutorial definindo como é 'sorteado' um número pelo computador.

À rigor, não existem números aleatórios em Computação. Computadores não pensam ou sorteiam. Computadores obedecem a comandos. O que eles fazem é o mesmo que seus programas fazem: entram laços, loopings, testes condicionais, etc.

Então, os computadores também usam algoritmos, códigos e funções para gerarem esses números que devem ser, teoricamente, aleatórios. Porém, nunca serão totalmente aleatórios, pois são gerados por código, por funções e tarefas específicas, assim, são denominados pseudo-números.

Visto que os números sorteados não são totalmente aleatórios, resta a nós estabelecermos uma regra de sorteio ou aleatoriedade.

Primeiramente vou colocar uma imagem do código fonte de um programa que eu fiz, obviamente utilizando as funções necessárias para realizar o dito pseudo-sorteio.

Código-fonte do programa pseudo-sorteador.

Primeiramente vou especificar a finalidade de cada biblioteca declarada.

<stdio.h> - É a biblioteca padrão de entrada e saída de dados da linguagem C / C++, utilizada aqui apenas para imprimir os resultados, através de 'printf()'.

<stdlib.h> - É a biblioteca padrão da linguagem C / C++, utilizada aqui para executar as funções srand(), rand() e system("pause"). As duas primeiras funções serão devidamente explicadas e detalhadas a seguir, mas, a system("pause") é usada simplesmente para, parar a execução do programa, e você poder ver os resultados exibidos.

<time.h> - É a biblioteca que contém as funções relacionadas ao tempo. Ela será utilizada aqui para executar a função time(), que servirá de regra para o sorteio.

Agora, vou explicar função por função, para que fique mais claro.

srand(time(NULL)) - É a função que estabelece a regra de aleatoriedade, e permite também que, toda vez que a função seja executada (seja por estruturas de repetição ou seja executando o programa novamente) ela gere um número pseudo-aleatório diferente. A regra de sorteio que aplicamos aqui, se baseia no tempo, sim, no relógio! Pode reparar que, se você estiver usando estruturas de repetição e executar a função num mesmo segundo, o número sorteado será o mesmo!

rand() - É a função que de fato 'sorteia' os números. O operador '%' ou 'MOD' como é chamado em algoritmo, denomina de quanto a quanto irá o numero sorteado, nesse caso, o sorteio vai de 0 a 6. Mas aqui quem decide a regras de limite é você, basta apenas utilizar uma formula aritmética para isto.

O programa, deverá ficar alguma coisa mais ou menos assim:

Possível resultado gerado pelo programa, visto que o número é pseudo-aleatório,  então, pode sortear qualquer número de 0 a 6.

É isso aí galera, espero que vocês tenham gostado do tutorial. Ele está bastante simples, mas, espero que com ele vocês consigam fazer um programa para sortear números para a tele sena pseudo-aleatórios.

Agradeço desde já e por favor, comentem, critiquem, elogiem!

Um grande abraço, e um high five do seu amigo, Victor! o/

6 comentários :

  1. Existe alguma maneira de, a partir de alguns resultados "aleatórios", determinar qual o algoritmo por detrás da aleatoriedade ou, pelo menos, verificar a probabilidade da ocorrência de determinados números?

    ResponderExcluir
  2. Existe alguma maneira de, a partir de alguns resultados "aleatórios", determinar qual o algoritmo por detrás da aleatoriedade ou, pelo menos, verificar a probabilidade da ocorrência de determinados números?

    ResponderExcluir
  3. Acabei de ler isso e estou me perguntando pq o titulo diz " Como gerar um número aleatório em C / C++?" se não há c++ nesses exemplos, entendam c != c++, então sse colocarem no titulo c/c++, deem exemplos em c++. Fica a dica!!!

    ResponderExcluir
    Respostas
    1. Também não entendo isso, procuro muitas coisas sobre C++ na internet, e sempre colocam "isso pra C/C++", "aquilo pra C/C++", mas nunca mostram pra C++.

      Excluir
    2. Eles colocam isso "C/C++" pois é a mesma coisa para as duas linguagens, já que ambas são muito parecidas, e neste caso não foi necessário uma alteração.

      Excluir
  4. Vocês que se dizem programadores devem aprender a entender a lógica, tudo bem que sintaxe é importante mas nem tudo vai vim mastigado, aprendam fazer adaptações

    ResponderExcluir