Autor
|
Tema: Sobre la función rand() (Leído 3,440 veces)
|
#Aitor
Desconectado
Mensajes: 173
|
Siempre he tenido la duda de como Rand, genera números al azar... int rand ( int $min , int $max )
$random = rand ( 0 , 10 );
Para este caso, la variable random tendría un valor al azar entre 0 y 10, (11 posibles combinaciones), la duda está en... de esos 11, cómo coge uno al azar? Me imagino un while, recorriendo todos los números y rompiéndose en cualquier momento, pero cómo? Y dicho sea de paso, hay alguna forma de ver como está funcionando una función(valga la redundancia), por dentro? Saludos!
|
|
|
En línea
|
Mi algoritmo en PHP (estupideces y más).while($Se_feliz){ Piensa_un_OBJETIVO(); // Sin excusas! if($Tienes_un_objetivo){ Suspira(); // Sé paciente. if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return; //RETURN; ¿O volvemos a empezar? }else{ Inténtalo_de_nuevo(); } } }
|
|
|
MinusFour
|
Siempre he tenido la duda de como Rand, genera números al azar... int rand ( int $min , int $max )
$random = rand ( 0 , 10 );
Para este caso, la variable random tendría un valor al azar entre 0 y 10, (11 posibles combinaciones), la duda está en... de esos 11, cómo coge uno al azar? Me imagino un while, recorriendo todos los números y rompiéndose en cualquier momento, pero cómo? Y dicho sea de paso, hay alguna forma de ver como está funcionando una función(valga la redundancia), por dentro? Saludos! Son algoritmos pseudoaleatorios: http://es.wikipedia.org/wiki/Generador_de_n%C3%BAmeros_pseudoaleatoriosY puedes ver las sources de php para una funcion en especifico. I.e. rand: https://github.com/php/php-src/blob/4b943c9c0dd4114adc78416c5241f11ad5c98a80/ext/standard/rand.c
|
|
|
En línea
|
|
|
|
#Aitor
Desconectado
Mensajes: 173
|
Gracias por responder, cómo era de esperar no entiendo ni pio de como funciona el código que contiene rand... Lo que no termino de comprender es por qué es pseudoaleatorios... Un generador pseudoaleatorio de números (GPAN) es un algoritmo que produce una sucesión de números que es una muy buena aproximación a un conjunto aleatorio de números. ¿Cómo es posible que se califique de una aproximación a una aletatoridad? Significa, ¿que es posible llegar a entender el funcionamiento y por ello saber con antelación que número escogerá? Y luego, esto... "La generación de números aleatorios es demasiado importante como para ser dejado al azar." Precisamente, ser aleatorio, es escoger algo al azar, ¿no?, si yo tengo una hurna con 5 bolas de 5 colores diferentes, y escojo una, estoy escogiendo una al azar, es decir, aleatorio, ¿no? ¿Qué están haciendo realmente los algoritmos peudoaleatorios? Saludos!
|
|
|
En línea
|
Mi algoritmo en PHP (estupideces y más).while($Se_feliz){ Piensa_un_OBJETIVO(); // Sin excusas! if($Tienes_un_objetivo){ Suspira(); // Sé paciente. if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return; //RETURN; ¿O volvemos a empezar? }else{ Inténtalo_de_nuevo(); } } }
|
|
|
MinusFour
|
Pseudo significa faux, falso. Son numeros que no son verdaderamente aleatorios pero sirven para una aplicacion que espera algun grado de aleatoridad. Sin embargo, siguen siendo algoritmos que funcionan deterministicamente ( Sistema determinista). De manera que conociendo toda la informacion involucrada en el proceso de la creacion del numero aleatorio (la llave o "seed" y el algoritmo) es posible reproducir el mismo numero. Lo que se utiliza para producir verdaderos numeros aleatorios es "ruido" observado en ciertos dispositivos de hardware. Eventos que son verdaderamente aleatorios e impredecibles. En Linux por ejemplo se usa /dev/random y /dev/urandom, no estoy seguro que haga Windows en ese aspecto.
|
|
|
En línea
|
|
|
|
#Aitor
Desconectado
Mensajes: 173
|
Pseudo significa faux, falso. Son numeros que no son verdaderamente aleatorios pero sirven para una aplicacion que espera algun grado de aleatoridad. Sin embargo, siguen siendo algoritmos que funcionan deterministicamente ( Sistema determinista). De manera que conociendo toda la informacion involucrada en el proceso de la creacion del numero aleatorio (la llave o "seed" y el algoritmo) es posible reproducir el mismo numero. Lo que se utiliza para producir verdaderos numeros aleatorios es "ruido" observado en ciertos dispositivos de hardware. Eventos que son verdaderamente aleatorios e impredecibles. En Linux por ejemplo se usa /dev/random y /dev/urandom, no estoy seguro que haga Windows en ese aspecto. Entiendo, ¿entonces es posible que una máquina tragaperras también utilice números pseudoaleatorios? Un modelo determinista producirá siempre la misma salida a partir de las mismas condiciones de partida o el estado inicial Y en el caso de la función Rand(), ¿es posible recrear dicha situación? Ejemplo, usar rand, retorna un número, [forma de recrear la situación anterior] y retornar el mismo número Edito por si se mal entiende. De manera que conociendo toda la informacion involucrada en el proceso de la creacion del numero aleatorio (la llave o "seed" y el algoritmo) es posible reproducir el mismo numero. Básicamente es lo mismo que pregunté, pero me refiero si ya existe alguna función, manera, algo, de recrear la misma situación anterior, por ejemplo no sé dónde leí que en c++, se hacia con la pila interna, de forma que si en un intervalo no muy "alto", digamos que abres el programa dos veces en menos de 60 segundos, el primer valor, siempre será menor que el segundo, porque la pila interna esta en crecimiento. Muchísimas gracias por tomarte las molestias en responder >.<
|
|
« Última modificación: 3 Enero 2015, 17:51 pm por #Aitor »
|
En línea
|
Mi algoritmo en PHP (estupideces y más).while($Se_feliz){ Piensa_un_OBJETIVO(); // Sin excusas! if($Tienes_un_objetivo){ Suspira(); // Sé paciente. if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return; //RETURN; ¿O volvemos a empezar? }else{ Inténtalo_de_nuevo(); } } }
|
|
|
engel lex
|
Ninguna computadora produce numeros realmente aleatorios, ningún sistema deterministico lo hace, si, un tragaperras es pseudo y normalmente pasa una evaluación de algoritmo para asegurar su constancia y que el jugador pueda ganar
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
#Aitor
Desconectado
Mensajes: 173
|
Ninguna computadora produce numeros realmente aleatorios, ningún sistema deterministico lo hace, si, un tragaperras es pseudo y normalmente pasa una evaluación de algoritmo para asegurar su constancia y que el jugador pueda ganar
Pero con ruido si se puede crear números aleatorios, no? Lo que se utiliza para producir verdaderos números aleatorios es "ruido" observado en ciertos dispositivos de hardware. Eventos que son verdaderamente aleatorios e impredecibles. En Linux por ejemplo se usa /dev/random y /dev/urandom, no estoy seguro que haga Windows en ese aspecto. ¿Se podría decir que el azar no existe? Si a una persona la haces escoger algo al 'azar', ejemplo, 20 cajas numeradas, es probable que opte por coger alguna caja en particular por su número llamativo, dicho de otra forma, ¿su decisión fue tomada al azar? si la haces coger una segunda caja al azar, es probable que sepas qué elección cogerá a partir de su primera elección y conociendo sus números 'favoritos'. ¿Sigue siendo 'azar'? Mod: No usar [code] para citas.
|
|
« Última modificación: 13 Enero 2015, 15:46 pm por #!drvy »
|
En línea
|
Mi algoritmo en PHP (estupideces y más).while($Se_feliz){ Piensa_un_OBJETIVO(); // Sin excusas! if($Tienes_un_objetivo){ Suspira(); // Sé paciente. if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return; //RETURN; ¿O volvemos a empezar? }else{ Inténtalo_de_nuevo(); } } }
|
|
|
engel lex
|
Son temas ya filosoficos....
Del ruido es delicado, ya que que ruido viene de algun lugar (no solo es ruido de sonido, se considera ruidos a ciertas distorciones, ya sean de sonido, luz, electrico, etc)
El azar viene del caos y en general el caos en muchos casos son patrones organizados que aun no hemos clasificado
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
MinusFour
|
Entiendo, ¿entonces es posible que una máquina tragaperras también utilice números pseudoaleatorios? Un modelo determinista producirá siempre la misma salida a partir de las mismas condiciones de partida o el estado inicial Y en el caso de la función Rand(), ¿es posible recrear dicha situación? Ejemplo, usar rand, retorna un número, [forma de recrear la situación anterior] y retornar el mismo número Edito por si se mal entiende. De manera que conociendo toda la informacion involucrada en el proceso de la creacion del numero aleatorio (la llave o "seed" y el algoritmo) es posible reproducir el mismo numero. Básicamente es lo mismo que pregunté, pero me refiero si ya existe alguna función, manera, algo, de recrear la misma situación anterior, por ejemplo no sé dónde leí que en c++, se hacia con la pila interna, de forma que si en un intervalo no muy "alto", digamos que abres el programa dos veces en menos de 60 segundos, el primer valor, siempre será menor que el segundo, porque la pila interna esta en crecimiento. Muchísimas gracias por tomarte las molestias en responder >.< Mira, de esta forma puedo reproducir el mismo numero con rand_r una y otra vez. #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv){ int seed; unsigned int random; seed = 13; random = rand_r(&seed); printf("El numero random es:%d\n", random ); // Otra vez seed = 13; random = rand_r(&seed); printf("El numero random es:%d\n", random ); return 0; }
Output:[m1n054@ALEXPC gcc]$ ./ex1 El numero random es:1898476902 El numero random es:1898476902
|
|
« Última modificación: 13 Enero 2015, 15:46 pm por #!drvy »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Funcion Rand() con strings en PHP
PHP
|
Riki_89D
|
5
|
10,141
|
9 Marzo 2009, 14:37 pm
por cassiani
|
|
|
Duda sobre funcion rand()
Programación C/C++
|
Oblivi0n
|
4
|
3,306
|
17 Junio 2010, 00:09 am
por cbug
|
|
|
Programa funcion rand()
Programación C/C++
|
hocius
|
4
|
3,452
|
9 Octubre 2010, 22:30 pm
por hocius
|
|
|
Ayuda con la función rand.
Programación C/C++
|
Felipe_Henriquez
|
5
|
5,062
|
31 Octubre 2011, 20:20 pm
por Queta
|
|
|
Función rand sin repeticiones
Programación C/C++
|
alejandro70
|
3
|
2,468
|
29 Julio 2015, 09:37 am
por do-while
|
|