• Publicidad

rand

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

rand

Notapor patito » 2007-05-07 22:26 @977

Cómo crear números aleatorios rand sin que se dupliquen.
patito
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2007-05-07 22:23 @974

Publicidad

Notapor explorer » 2007-05-08 01:47 @115

Bienvenido a los foros de Perl en Español.

Generar números aleatorios es algo muy complicado. A la larga, se van a repetir. Más información en la página de Wikipedia.

En Perl, se podría hacer algo como recordar los números que han salido, en una hash, y repetir la tirada en el caso de repetir algún número.

O al revés: tener los números o elementos a elegir dentro de un array y con la ayuda de splice sacarlos de forma aleatoria.

Hay módulos en CPAN sobre este tema. Por ejemplo, también, para barajar cartas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor patito » 2007-05-08 07:41 @362

Algún código ayudaría mucho.
patito
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2007-05-07 22:23 @974

Notapor monoswim » 2007-05-08 12:44 @572

Hola, antes de queres ver código deberías de pensar bien que es lo que deseas hacer, por ejemplo para hacer lo que dice explorer de usar los datos de un array puedes hacer:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @data = (1,2,3,4,5,6,7,8,9);
my $rand = int(rand(@data));

print "Content-type: text/html\n\n";
print "$data[$rand]";
exit;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Esa función te tirará rand del 1 al 9 podrías almacenar esos valores en una base de datos e ir sacando los números que ya salieron... hasta que se quede con 1 solo, y ahí a recargar...

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor patito » 2007-05-08 13:27 @602

Agradezco el apoyo, y es por eso que comparto el código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for $j (1..30) {
    do {
        $sol = int(rand 30)+1;
    } while $used[$sol]++;

    print "$sol\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
patito
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2007-05-07 22:23 @974

Notapor creating021 » 2007-05-08 14:57 @665

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/env perl
use Config;

print "Your random number generator repeats itself after\n";
print "no more than ", 2 ** $Config{randbits}, " numbers.\n";

srand(1);

if (int(rand() * (2 ** $Config{randbits})) == 16838){
  print "Uh oh! Looks like your computer uses the ANSI example.\n";
  print "I bet the next three rands are 5758, 10113 and 17515.\n";

 foreach (1, 2, 3){
  print rand() * (2 ** $Config{randbits}), "\n";
 }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado