Ver Mensaje Individual
  #5  
Antiguo 23-07-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Cita:
Empezado por sabueso1010 Ver Mensaje
gracias ecfisa con tu codigo funciono perfectamente
de hecho ya lo habia intentado con algo parecido a tu codigo
pero me estaba faltando la sentencia RANDOMIZE, al parecer
el random no funciona si no aplicas antes un randomize
, pero
con tu codigo ya funciona al 100%, gracias .
Hola sabueso1010,
La función Random() SI funciona, y de mil maravillas. El "defecto" es que lee, siempre, el mismo valor semilla con el cual genera el primer y los siguientes números pseudoaleatorios.
¿Poqué? Porque todo experimento o escenario de simulación debe tener como característica principal de poder repetirse a fin de comprobar y evaluar los resultados.

Para pruebas, y simulaciones es necesario poder recrear los mismos escenarios.

Cuando las pruebas finalizan y se da por válido el experimento; o para nuestro caso, en programación, para cuando el sistema sale de la etapa de desarrollo o mal llamado producción para ser comercializado es cuando entra en juego el procedimiento Randomize.

Randomize lo que hace es regenerar un nuevo valor semilla, por lo general se obtiene y se calcula en función de la fecha y hora del sistema. De este modo, al menos en teoría, nunca deberías obtener el mismo valor semilla.

Aquí hay que aclarar un punto muy importante: Sólo se debe invocar a Randomiza una sola vez en todo el programa; por lo general se estila y es conveniente hacerlo cuando se crea el form principal.

Cita:
Empezado por ecfisa Ver Mensaje
Hola sabueso1010.

Lo que sucede es que Random no genera números aleatorios sino pseudoaleatorios basados en una formula más o menos compleja que casi podríamos decir se asemeja a lo aleatorio.
Pues no se que le ves de complejo a un generador congruencial mixto:

Código Delphi [-]
Xiplus1 = ((Xi * A) + B) mod M

Siendo X0, léase X subíndice 0, el valor semilla y Xiplus1 el número i+1 a generar. El procedimiento se repite para Xi = Xiplus1.

El que posee un generador de la hostia es el programa Arena, que "básicamente" lo que hace es concatenar el resultado de N generadores:

X = Generador1 + Generador2 + ... + GeneradorN

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita