Foros del Web » Programando para Internet » PHP »

random predecible

Estas en el tema de random predecible en el foro de PHP en Foros del Web. Aburrido me puse a probar la rapidez de encontrar un numero aleratorio de mi computadora. Para eso cree este codigo: Código PHP: <?php  $nrs  =  ...
  #1 (permalink)  
Antiguo 21/08/2010, 23:07
 
Fecha de Ingreso: julio-2009
Mensajes: 58
Antigüedad: 14 años, 8 meses
Puntos: 0
random predecible

Aburrido me puse a probar la rapidez de encontrar un numero aleratorio de mi computadora.

Para eso cree este codigo:
Código PHP:
<?php 

$nrs 
'0123456789';

for (
$i 1$i <= 5$i++) 
{
    
$e .= $nrs{rand(0,9)};
}

for (
$i 1$e != $f$i++) 
{
    
$f '';
    for (
$g 1$g <= 5$g++) 
    {
        
$f .= $nrs{rand(0,9)};
    }
}

echo 
$i;

?>
Este codigo primeramente crea una clave aleratoria de 5 numeros. Despues dejo que la maquina encuentre aleratoriamente la misma clave, pero la probabilidad de encontrar la misma clave es 1 en 100.000. La maravilla de la tecnologia hace que en milésimas de segundo haya intentado tantas veces para llegar a la misma clave.
Por ultimo, el codigo nos dice los intentos que necesito la computadora para sacar la clave. despues de haberlo hecho diez veces seguidas, me lleve la sorpresa de que casi siempre le llevaba el mismo numero de intentos... 32769 intentos. Q casualidad no?

Es la funcion rand() de php totalmente aleratoria? No me parece. Tambien probe con bucles enromes pero siempre varia en un determinado rango de numeros.

Es la logica de la computadora tan perfecta que no se permite darnos tan solo un numero aleratorio?
  #2 (permalink)  
Antiguo 21/08/2010, 23:31
Avatar de camsworksinc  
Fecha de Ingreso: julio-2008
Ubicación: Queretaro
Mensajes: 261
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: random predecible

Las computadoras, o mas bien los programas, utilizan algoritmos para generar numeros PSEUDOALEATORIOS, lo que implica que eventualmente se pueden repetir en un patron dado. Dichos algoritmos utilizan una "semilla" a partir de la cual generan la serie de numeros aleatorios. Si dicha semilla es igual cada vez que generas una serie, los numeros seran los mismos.
En versiones de PHP anteriores a la 4, habia una instruccion llamada srand(), la cual generaba una nueva "semilla" para la funcion de rand(), y con ello asegurar una mayor aleatoriedad.

Checa la siguiente liga de wikipedia para que veas sobre los generadores de numeros pseudoaleatorios: http://es.wikipedia.org/wiki/Generador_pseudoaleatorio_de_n%C3%BAmeros
__________________
¡Malditas computadoras que siempre hacen lo que les DIGO que hagan, no lo que QUIERO que hagan!
  #3 (permalink)  
Antiguo 22/08/2010, 09:31
 
Fecha de Ingreso: julio-2009
Mensajes: 58
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: random predecible

Muy interesante, muchas gracias!
  #4 (permalink)  
Antiguo 22/08/2010, 13:15
 
Fecha de Ingreso: julio-2010
Mensajes: 28
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: random predecible

Es tan simple como te han dicho, faltando agregar que en una computadora "NO existe la aletoriedad" como te han dicho son algoritmos que te generan numeros a partir de una semilla.

mayormente usan los milisegundos de tiempo como semilla para que a partir de ellos te genere un numero.

pero como tu mismo has dicho los bucles se ejecutan tan rapido que hay mucha probabilidad que te genere los mismos numeros si no varia esta semilla.

aunque depende del algoritmo usado para los pseudoaleatorios.
  #5 (permalink)  
Antiguo 22/08/2010, 17:56
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: random predecible

entonces... esto me lleva a la conclusion de que en los juegos de azar de computadoras el azar no es tan azar? y yo que pensaba hacerme millonario en el casino jugando a las tragamonedas!... mejor me dedico al poker!

sobre el tema: hace tiempo tmb hice algo parecido pero en c++, solo que generaba un numero entre 1-999999 y o "Casualidad" daba siempre el mismo numero! investigue sobre el tema y termine con que no hay random ni aleatoriedad total en computacion, y en c++ tmb la funcion es rand y srand.

Offtopic: Huuu se me hizo tarde! me voy!

suerte chicos!
  #6 (permalink)  
Antiguo 22/08/2010, 18:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: random predecible

Se recomienda que uses mt_rand.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 22/08/2010, 19:52
 
Fecha de Ingreso: julio-2009
Mensajes: 58
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: random predecible

Si, en la computacion es dificil lograr un random totalmente inpredecible.

Lo que he oido es que existen hardwares -aparatos- que se conectan a traves de un puerto a la computadora que generan numeros aleratorios inpredecibles. Pero me es dificil pensar que necesitas comprar un aparato para CREAR NUMEROS ALERATORIOS! parece chiste jaja.

He aqui un ejemplo de que las ciencias formales son perfectas.

Garcias por sus aportes!

Etiquetas: random
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:52.