Cómo funciona realmente rand()?

Discusión en general sobre Gemix.

Cómo funciona realmente rand()?

Postby DoZ » Wed Jun 22, 2016 6:08 pm

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!
User avatar
DoZ
 
Posts: 416
Joined: Thu Apr 08, 2010 11:16 pm
Location: Buscando el Big Whoop

Re: Cómo funciona realmente rand()?

Postby CicTec » Wed Jun 22, 2016 8:03 pm

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Cómo funciona realmente rand()?

Postby DoZ » Wed Jun 22, 2016 8:34 pm

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?
User avatar
DoZ
 
Posts: 416
Joined: Thu Apr 08, 2010 11:16 pm
Location: Buscando el Big Whoop

Re: Cómo funciona realmente rand()?

Postby CicTec » Wed Jun 22, 2016 8:43 pm

Exacto, o sea modificada por algun factor externo (SO, etc.. aunque poco probable).
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Cómo funciona realmente rand()?

Postby SimulatorOne » Thu Jun 23, 2016 9:03 am

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.
User avatar
SimulatorOne
 
Posts: 6626
Joined: Tue Nov 17, 2009 2:52 pm
Location: Barcelona


Return to General

Who is online

Users browsing this forum: No registered users and 3 guests