Quiénes somos?   Contacto





Qué anda caliente:

  • No tan malo (8)
  • Le cuesta con el photoshop... :S (7)
  • Ingenio con nombres ;) (6)
  • 5 formas de hacer enojar a un programador ;) (5)
  • En el día del amigo... (4)
  • eficiencia pública ;) (3)
  • Prévert y Bárbara (2)
  • Hotel california (2)


  • Últimos comentarios:

  • dm:
    Me dejó pensando en muchos...
  • Yo Extranjero:
    Hola! Gracias por haberte mantenido...
  • Test de penetración con BackTrack, Contenido y Recursos:
    [...] Palabras clave: BackTrack, Test...
  • Ignacio:
    nico: todas las novias dicen...
  • Celia:
    Hola! tengo 58 años me...
  • Nicolas:
    Muy bueno,me reconozco cada dia...
  • Gus:
    Luis, no pasa nada porque...
  • noelia:
    hola!! tengo 22 años y...
  • AbRiL:
    Hola a todos les escribo...
  • adriana:
    hola amigos,ya escribi pero parece...
  • María Elena Gómez:
    Hola a todos Leí todo...
  • navegar en sitios restringidos | apirronarse:
    [...] En ►La Bitácora del...
  • tv links co | TV - TDT - DVD:
    [...] La Bitacora del Capitan...
  • rosi:
    me pide un codigo para...
  • lucho:
    Hola: La solucion propuesta es para...


  • Los de siempre:

  • Hernia de Disco (203)
  • Un'estate italiana (72)
  • VoipBuster... mmm se me hace agüita la boca (36)
  • El clásico "Truco" (36)
  • Clásicas (30)
  • piqueteros... (29)
  • Porqué Windows Vista va a fracasar (29)
  • Publicidad (25)


  • Categorías:

  • General
  • Programación
  • Internet & Tech
  • Medios
  • Blogs
  • Links
  • Google
  • Humor & tiempo libre
  • Software


  • Recomendados


    Archivos:

  • Agosto 2008
  • Julio 2008
  • Junio 2008
  • Mayo 2008
  • Abril 2008
  • Marzo 2008
  • Febrero 2008
  • Enero 2008
  • Diciembre 2007
  • Noviembre 2007
  • Octubre 2007
  • Septiembre 2007
  • Agosto 2007
  • Julio 2007
  • Junio 2007
  • Mayo 2007
  • Abril 2007
  • Marzo 2007
  • Febrero 2007
  • Enero 2007
  • Diciembre 2006
  • Noviembre 2006
  • Octubre 2006
  • Septiembre 2006
  • Agosto 2006
  • Julio 2006
  • Junio 2006
  • Mayo 2006
  • Abril 2006
  • Marzo 2006
  • Febrero 2006
  • Enero 2006
  • Diciembre 2005
  • Noviembre 2005
  • Octubre 2005
  • Septiembre 2005
  • Agosto 2005
  • Julio 2005
  • Junio 2005
  • Mayo 2005
  • Abril 2005
  • Marzo 2005
  • Febrero 2005
  • Enero 2005
  •  


    Otros:

    Identificarse
    Registrarse

    Meta:
    RSS 2.0
    RSS 2.0 de los comentarios
    Inválido!







    27/5/2008
    Me cacho en el random..

    Y es que leyendo esta nota revivo viejas discusiones sobre si los randoms de algunos lenguajes realmente son randoms… :S

    Así entonces una función random bien implementada normalmente daría una gráfica como la siguiente:

    Mientras que la mía, probada tanto en entorno windows/IIS, como lamp, me da esta escalofriante gráfica:

    La función de php usada es:

    header (\"Content-type: image/png\");
    $im = @imagecreatetruecolor(512, 512)
      or die(\"Cannot Initialize new GD image stream\");
    $white = imagecolorallocate($im, 255, 255, 255);
    for($y=0;$y<512;$y++){
      for($x=0;$x<512;$x++){
        if(rand(0,1)===1){
          imagesetpixel($im, $x, $y, $white);
        }
      }
      $x=0;
    }
    imagepng($im);
    imagedestroy($im);
    

    En random.org explican un poco más en detalle sobre este tema, aclarando que en realidad los números random usados en las computadoras (la mayoría), son pseudo-random, lo que significa que se generan de una manera predecible usando una fórmula matemática. Y si bien esto está bien para muchas cosas, no sirve para cosas que requieren un nivel real de aleatoriedad (como juegos de azar online, por ejemplo).



    Por Ignacio a las 6:57 am

    5 Comentarios »

    Trackback URL

    Hola!

    En Linux existe el archivo /dev/urandom que utiliza muchas cosas del kernel para generar numeros aleatorios. En la pagina de la Wikipedia se explica mejor:

    http://en.wikipedia.org/wiki//dev/random

    Una posible funcion random pueede ser:

    // Devuelve un numero aleatorio entre 0 y 255
    // usando /dev/urandom de linux.
    function xrand255() {
    global $x_rand;
    if (!isset($x_rand)) {
    $x_rand = fopen(”/dev/urandom”, “r”);
    if (!$x_rand) die(”fopen”);
    }
    $data = fread($x_rand, 1);
    return ord($data);
    }

    y para simular la funcion rand() de php podes usar:

    function xrand($a, $b) {
    $w = $b - $a + 1;
    return xrand255() % $w;
    }

    Saludos!

    Publicado por AlejoLp — 27/5/2008 @ 11:26 am

    En php usa mt_rand() en vez de rand() y vas a obtener una imagen “TRUE Random” ;)

    Publicado por marcoss — 28/5/2008 @ 8:14 am

    gracias a ambos :)

    Publicado por Ignacio — 30/5/2008 @ 8:39 am

    No sólo voy a pecar de antiguo, sino que voy a demostrar que lo soy:
    En el Basic de la Commodore (64 y 128), la función random, funcionaba dando números aleatorios “en serio”.
    A partir de ahí, siempre se necesitó inventar algún “truquito” para conseguir buenos resultados.
    Nunca me puse a averiguar por qué… se lo dejo a los que tengan ganas de andar buceando por ahí.

    Publicado por Gustavo — 30/5/2008 @ 4:49 pm

    Ignacio, hasta donde se, el problema de los generadores de números aleatorios sigue abierto. Todos los métodos son determinísticos, sólo que ‘mezclan’ bastante bien las cosas (en general, son periódicos con período 2^32). Una de las mejores fuentes sigue siendo el vol 2 de The Art of Computer Prog., de Knuth.

    Publicado por JuanPablo — 31/5/2008 @ 8:45 pm

    Leave a Reply



     

    Powered by WordPress