SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: PeterM en Miércoles 2 de Noviembre de 2005, 14:15
-
Hola. Necesito hacer un trabajo sobre un generador de números desde 0 a N (N se lo doy yo) y por más que busco en la red no encuentro ni un solo código. Un ejemplo es el algoritmo de Tausworthe, pero este lo ha dao el profesor y va a ser q no vale. Me hariais un gran favor facilitandome uno. Thank you very much. :comp:
-
¿es un contador?
-
No es un contador. He estado mirando los otros ejemplos que hay en el foro: de sumar uno hasta pulsar una tecla xo eso no creo q m valga. Lo q yo pido,creo, es un algoritmo generador ya hexo ya que el q se me ha facilitado a mi tiene autor conocido.
Algoritmo de Tausworthe.
Pasos:
1. Se toma una semilla inicial, que llamaremos seed, con una longitud de 8 bits. Por ejemplo: seed = 10111001
2. Se desplaza seed tres bits a la derecha. El resultado lo guardamos en
seed_desplazamiento1, con lo cual tenemos que: seed_desplazamiento1 = 00010111
3. Se hace la operación: seed2 = seed_desplazamiento1 XOR seed = 10101110
4. Se desplaza seed2 cinco bits a la izquierda. El resultado lo guardamos en
seed_desplazamiento2, con lo cual tenemos que: seed_desplazamiento2 = 11000000
5. Se hace la operación: seed_final = seed_desplazamiento2 XOR seed2 = 01101110
6. Se repite la secuencia de pasos 1-5 cien veces mediante un bucle, tomando como semilla inicial (seed) en cada iteración el valor de seed_final en la iteración anterior. El último valor que se obtenga para seed_final es nuestro primer número aleatorio.
7. Cuando se vaya a calcular el siguiente número aleatorio hay que actualizar la semilla.Para ello habrá que hacer: seed = seed_final
Esta forma de proceder genera números aleatorios entre 0 y 255 (8 bits)
-
Hmmm bueno, si lo que necesitás es un generador de números pseudo-aleatorios, te presto un algoritmo fácil que suelo usar:
-El usuario introduce N. Mientras lo introduce, nosotros contamos el tiempo que tarda en hacerlo (por ejemplo, +1 en la iteración mientras está presionada la tecla).
-Luego, obtengo los milisegundos de la hora actual.
-Efectúo un XOR de ambos valores.
-Y a ese número, le aplico MOD N para obtener el deseado.
No lo he probado mucho, pero suele ser bastante aleatorio.
-
Muxas gracias, lo probaré. De todos modos si alguien sabe de alguno otro pseudo-algoritmo se siguen aceptando propuestas. :kicking: