Page 1 of 1

Cómo funciona realmente rand()?

PostPosted: Wed Jun 22, 2016 6:08 pm
by DoZ
Buenas! No sabía dónde poner esto, pues es una duda, pero tampoco es que necesite ayuda ni dependa de entenderlo, pero es que me lo llevo preguntando hace unos días, y tras buscar un poco en Google ahora mismo, no me ha quedado muy claro. Tengo entendido que en C y en la mayoría de los lenguajes, se usan divisiones con decimales, y de ahí se obtiene el rand o la base para obtenerlo. En esencia, que son seudo-randoms, pues no existe el azar absoluto en computación, o eso decía otro.

También he leído que hay funciones de random que siempre repiten la cadena de valores y otros que usan seeds para que esto no ocurra. Cuál es el caso de Gemix? Supongo que se limita a utilizar alguna función en C/C++, pero me encantaría conocer (dentro de mis limitadas posibilidades) un poco más acerca de esto.

Un saludo!

Re: Cómo funciona realmente rand()?

PostPosted: Wed Jun 22, 2016 8:03 pm
by CicTec
Hola DoZ,

He movido el hilo en un lugar mas adecuado.

Pues, como has dicho, el RAND generalmente genera numeros pseudo-casuales, y puede haber varias implementaciones, utilizando funciones standard de la libreria de C, o implementando otros algoritmos.

Gemix utiliza el segundo caso, tambien depende de la semilla que el algoritmo genera, de conseguencia, si la semilla es la misma, el algoritmo generara siempre la misma secuencia de pseudo-casuales, obviamente esta se puede cambiar por la funcion RAND_SEED.

Re: Cómo funciona realmente rand()?

PostPosted: Wed Jun 22, 2016 8:34 pm
by DoZ
Es decir, que cada vez que se compila un programa, se genera una semilla, y no cambia a no ser que se lo indiques con la función RAND_SEED?

Re: Cómo funciona realmente rand()?

PostPosted: Wed Jun 22, 2016 8:43 pm
by CicTec
Exacto, o sea modificada por algun factor externo (SO, etc.. aunque poco probable).

Re: Cómo funciona realmente rand()?

PostPosted: Thu Jun 23, 2016 9:03 am
by SimulatorOne
Juraría que la semilla aleatoria la coge de la fecha y hora del sistema operativo.
Ya se habló de algún caso de que siempre daba la misma secuencia de número y la causa es que la hora y fecha era la misma, no se si el bug venía de linux.

Esta bien usar Rand seed para dar exactamente la misma secuencia de números rands, si te interesa

Normalmente no se suele usar la función de rand seed, interesa que siempre de números diferentes en cada ejecución del juego. Crea dinamismo diferente cada partida o comportamiento, es algo que a mi me gusta mucho.