The Jair has you
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Numeros al azar

2 participantes

Ir abajo

Numeros al azar Empty Numeros al azar

Mensaje por djcloud Mar 30 Oct 2007, 23:40

Alguien ha conseguido numeros al azar diferentes en cada ejecucion?.

Yo he exo mirando los tutoriales este pequeño programa:

Código:
class COSA

creation make

feature {ANY}
make is
local
do
        azar.next

        std_output.put_string(azar.last_integer(2).to_string)
        azar.next
        azar.next
        std_output.put_string(azar.last_integer(3).to_string)
end

azar:STD_RAND is
        once
                !!Result.make
        end

end --class COSA

el problema es que siempre me da 2 y 1. (si pongo un solo next entre uno y otro son dos doses). Esto es porque el patron en que se basa para sacarlo es el mismo en cada ejecucion. En otros lenguajes hay un randomize, que le das y si salen al azar de verdad, aqui no se que pollas hacer. Se supone que pasando una semilla al crearlo saldria mejor. PEro que le paso, el numero de votos? eso haria que siempre qu ehaga la misma simulacion de votos, los escaños empatados vayan a los mismos partidos.

Help!
djcloud
djcloud
Amo del foro
Amo del foro

Cantidad de envíos : 389
Edad : 39
Fecha de inscripción : 11/10/2007

Volver arriba Ir abajo

Numeros al azar Empty Re: Numeros al azar

Mensaje por Elía Miér 31 Oct 2007, 00:17

Hombre, la cosa más sencilla que se me ocurre por ahora es coger alguna variable del sistema (por ejemplo los segundos de la hora) y utilizarlos para sacar un número aleatorio.
Elía
Elía
Amo del foro
Amo del foro

Cantidad de envíos : 325
Fecha de inscripción : 14/10/2007

Volver arriba Ir abajo

Numeros al azar Empty Re: Numeros al azar

Mensaje por djcloud Vie 02 Nov 2007, 15:38

al final hice algo asi como loq ue decia Elía.

Código:
sortear_escano(max:INTEGER):INTEGER is
local
azar : STD_RAND
t:TIME
do
        t.update
        create azar.with_seed(t.hash_code)
        azar.next
        Result:=azar.last_integer(max)
end

Este metodo devuelve un numero al azar entre 1 y max, ambos inclusives. Asi si tienes empate entre dos pides uno entre 1 y 2 (son enteros) si tienes empate entre 3 candidaturas entre 1 y 3,....
djcloud
djcloud
Amo del foro
Amo del foro

Cantidad de envíos : 389
Edad : 39
Fecha de inscripción : 11/10/2007

Volver arriba Ir abajo

Numeros al azar Empty Re: Numeros al azar

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.