[C con Clase] Funcion para números aleatorios random

Steven Davidson srd4121 en njit.edu
Sab Mar 3 18:22:34 CET 2012


Hola Diego,

2012/3/3 Diego <diegoartesanal en gmail.com>:
>

[CORTE]

> Simplemente estoy tratando de ver los números que genera, resulta que cuando
> utilizo este for en el main, todos los números salen iguales, si lo hago de
> manera manual (apretando '7' de una vez) para ver qué sale, también siempre
> sale el mismo rango de número. Según tenía entendido la función srand()
> define la semilla de dónde se generan los números aleatorios, pero bueno, no
> he encontrado solución todavía.
> Mi objetivo es poder generar números aleatorios y guardarlos en un vector ya
> que esos números los utilizaré como posiciones para colocar las minas en mi
> juego. Luego validaré que los números no se repitan .
>

El problema es que reinicias la semilla cada vez que invoques a
'generaNroAleatorio()'. La solución es invocar a 'srand()' UNA sola
vez, y en 'main()'. Posteriores invocaciones son a 'rand()'.

En segundo lugar, usas un cálculo equivocado para ajustar tu intervalo
al de 'rand()'. Deberías usar la siguiente fórmula:

valor_generado = valor_inicial + (int) (nIntervalo * (rand() / (RAND_MAX+1.0)));

Como es un cálculo más complejo, muchos videojuegos usan el método que
has usado por rapidez de ejecución, pero es posible que sea menos
aleatorio.


Espero que esto aclare el tema.

Steven




Más información sobre la lista de distribución Cconclase