Números aleatórios

Números aleatórios

por Claudivan Ribeiro -
Número de respostas: 5
Esta função promete sumular o lançamento de uma moeda. Segunda a página do prof. Ffeoffiilloff existe um erro. Alguém sabe qual?

char *RolaMoeda (void) {
 int r;
 r = rand () % 2;
 if (r == 1) return "cara";
 else return "coroa";
}

/* se o número aleatório gerado por rand() for ímpar, devolve 1, caso contrário
devolve 0 */
Este programa utiliza a função de forma satisfatória:

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# define N 4

int main ()
{
 int i;
 srand(time(NULL));
 for (i = 0; i < N; i++)
 printf ("%s\n", RolaMoeda());
 return 0;
}

Em resposta à Claudivan Ribeiro

Re: Números aleatórios

por Atol Fortin de Oliveira -
Como a funcao rand() é meio roubada, tirar % 2 nao é muito bom,

o jeito aconselhado a gerar um numero 'aleatorio' entre 0 e n , é :

x = n * ( (double) (1.0*rand()) / (double) (1.0*RAND_MAX + 1.0)) );

algo assim.
Em resposta à Atol Fortin de Oliveira

Re: Números aleatórios

por Felipe Simionato Solferini -
Ele não poderia , por exemplo, chamar o resultado (0,1) de cara e o (1,0) de coroa? dai ele geraria dois numeros aleatorios. Se aparecesse (0,0) ou (1,1) o programa geraria denovo, até aparecer (0,1) ou (1,0) eu acho que isso faria o programa realmente simular uma moeda.
Em resposta à Felipe Simionato Solferini

Re: Números aleatórios

por Marcos de Azevedo Iriarte -
Isso não é ineficiente não? Já pensou que para cada dois resultados afirmativos ( cara ou coroa ) espera-se dois negativos? Se você for simular o lançamento de 1 milhão de moedas você vai ter que gerar ( num caso uniforme ) 4 milhões de números pseudo-aleatórios? Melhor usar o método ruim do que fazer pelo seu método.

Se quiser algo realmente aleatório, faça o seu programa consumir o serviço de http://random.org . Para até uma quantidade de números é de graça.


Até!
Em resposta à Marcos de Azevedo Iriarte

Re: Números aleatórios

por Felipe Simionato Solferini -
Mas ele falou de uma moeda =P
Pode ser um pouco ineficiente, mas eh uma moeda 100% honesta!! ^^



OMG!!! EP2!!! Pegadinha do mallandro?
Em resposta à Felipe Simionato Solferini

Re: Números aleatórios

por Marcos de Azevedo Iriarte -
100% honesta não é porque os números gerados são pseudo-aleatórios. É como se você pudesse prever quantas voltas vai dar sua moeda no ar antes dela realmente cair e você verificar o resultado.

Até!