Date: Wed, 14 Jul 2004 14:11:09 -0400 From: Alvaro Herrera <[EMAIL PROTECTED]> Subject: Re: Como obtener numeros aleatorio en Shell.
> No se me ocurrio como obtenerlo, asi es que me hice un tipico programita > C que usa rand para obtener numeros aleatorios. Ten mucho cuidado que en tu programita C los datos estan "sesgados" es decir que despues de un "tiempo" que estes tirando numeros aleatorios, estos se te van a repetir; para eliminar esto, elimina el "sesgo" inicial con la sentencia srand(seed) donde seed es la "semilla" para decirle a C use una variedad de los algoritmos para generar numeros aleatorios que posee. >$RANDOM ;-) > # ls wallpapers|sed -n $(random 1 $(ls wallpapers|wc -l))p >Yo hice algo muy muy parecido ... si encuentras una >solucion mejor, por favor avisa. -- Alvaro Herrera (<alvherre[a]dcc.uchile.cl>) "Some men are heterosexual, and some are bisexual, and some men don't think about sex at all... they become lawyers" (Woody Allen) ===== "the guardian of the darkness" Correo Yahoo! - 6 MB, tecnología antispam ¡gratis! Suscribite ya http://correo.yahoo.com.ar/ From [EMAIL PROTECTED] Wed Jul 14 19:28:42 2004 From: [EMAIL PROTECTED] (Antonio Chay Hidalgo) Date: Wed Jul 14 19:23:06 2004 Subject: Como obtener numeros aleatorio en Shell. In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> On Wed, 14 Jul 2004 17:31:06 -0400 Alvaro Herrera <[EMAIL PROTECTED]> wrote: > > Si se llega a convertir en un problema, usa un "glob": > > perl -le '@a=<*.jpg>; print $a[int(rand(@a))]' Aun mejor! Ahora si que quedo "rudo": # wmsetbg "$(perl -le '@a=<$ENV{HOME}/wallpapers/*>; print $a[int(rand(@a))]')" Saludos y gracias a todos. -- Antonio Chay Hidalgo <[EMAIL PROTECTED]> From [EMAIL PROTECTED] Wed Jul 14 19:39:30 2004 From: [EMAIL PROTECTED] (Antonio Chay Hidalgo) Date: Wed Jul 14 19:33:49 2004 Subject: rand, srand Era: (sin asunto) In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> On Wed, 14 Jul 2004 19:51:06 -0300 (ART) juan pablo Rumie Vittar <[EMAIL PROTECTED]> wrote: > Ten mucho cuidado que en tu programita C los datos > estan "sesgados" es decir que despues de un "tiempo" > que estes tirando numeros aleatorios, estos se te van > a repetir; para eliminar esto, elimina el "sesgo" > inicial con la sentencia srand(seed) donde seed es la > "semilla" para decirle a C use una variedad de los > algoritmos para generar numeros aleatorios que posee. > Cierto. Este es mi codigo: srand(time(0)); printf("%d\n", atoi(argv[1]) + (int)(atof(argv[2])*rand()/(RAND_MAX+1.0))); Siempre he encontrado practico usar time(0) para obtener una semilla, ahora que quiza exista un metodo mejor y estoy cegado por la costumbre. La obtencion del numero la tome de la pagina del manual de rand, ya que asi lo recomienda. Saludos. -- Antonio Chay Hidalgo <[EMAIL PROTECTED]>

