Me gustaría generar números aleatorios. Todos los manuales para crear números aleatorios utilizan la hora y fecha actual como semilla aleatoria. ¿Alguien puede explicarme como funciona esa semilla?¿Son realmente aleatorios los números que se generan a partir de esa semilla?Si no son ¿Se puede hacer de alguna manera para que los numeros generados tengan el 50% de probabilidad (si son dos), (33.3% si son tres) ,etc.?
Si quiero generar números aleatorios entre 0 y 2 ambos inclusive:
Al 0 se le da 33.3% de probabilidad
Al 1 otro 33.3%
Al 2 otro 33.3%
¿Me explico?
Ahi tienes informacion de la msdn:
http://msdn.microsoft.com/en-us/library/398ax69y%28v=VS.71%29.aspx
Realmente No son aleatorios del todo, como tu bien dijiste tiene que ver con la hora o con la fechao con cualquier otro numero...
No se podria hacer porcentaje... hombre si usaras ifs y tal podrias sacar algo descartando numeros, pero como ya dije, descartando.
salu2!
¡Buenas!
A ver si este codigo responde a tu pregunta:
#include <stdlib.h>
#include <stdio.h>
#define DIM 3
#define NUM_MUESTRAS 6
void frecuencias(int repeticiones)
{
int i , frecuencias[DIM] = {0};
for(i = 0 ; i < repeticiones ; i++)
{
++frecuencias[rand() % DIM];
}
printf("%d REPETICIONES\n-------------------------------------------\n",repeticiones);
for(i = 0 ; i < DIM ; i++)
{
printf("%d - %02.2f%%\n", i , 100 * ((float)frecuencias[i]) / repeticiones);
}
printf("\n");
return;
}
int main(int argc, char *argv[])
{
int i , rep = 10;
for(i = 0 ; i < NUM_MUESTRAS ; i++)
{
frecuencias(rep);
rep *= 10;
}
getchar();
return 0;
}
Cuando no sepas que hace algo, experimenta, aprenderas mas y descubriras como funcionan las cosas.
¡Saludos!