| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
rapers
Registrado: 01 Jun 2011 Mensajes: 3
| Publicado: 01/06/2011 8:37 am | | | Título: AYUDA con 1000 números generados por algo parecido a rand() |
| Buenas, tengo un problema que no consigo resolver y me hace aprobar una asignatura:
El juego consiste en encontrar los 10 siguientes numeros que siguen a la lista de 1000 numeros proporcionada, los numeros se han generado mediante un sistema afin similar al de la rutina rand() de la libreria estandar del C en la implementacion de visual C++.
LLevo varios días y no consigo sacar de qué manera se generan los números de la serie, el profesor me ha dicho que actúa como un registro desplazador de 32 bits pero no consigo sacar los 10 números siguientes.
Fichero con los 1000 números:
Si conseguis sacar los 10 números siguientes a esos 1000 números os estaría eternamente agradecido.
Gracias. |
|
| Volver arriba | |
 |
polly
Registrado: 19 Jul 2007 Mensajes: 618
| Publicado: 02/06/2011 2:53 am | | | Título: |
| ¿No serán números aleatorios simplemente?
S2 |
|
| Volver arriba | |
 |
rapers
Registrado: 01 Jun 2011 Mensajes: 3
| Publicado: 02/06/2011 8:34 am | | | Título: |
| | Los números que genera la función rand() no son en su integridad 100% aleatorios...usan un algoritmo de desplazamiento de 32 bits para generarlos en un órden...el problema consiste en que mi profesor se ha inventado una función parecida y hay que sacar el algoritmo para generar estos 10 números |
|
| Volver arriba | |
 |
|
polly
Registrado: 19 Jul 2007 Mensajes: 618
| Publicado: 02/06/2011 9:46 am | | | Título: |
| Pues si se la "ha inventado" no creo que puedas sacar los siguientes 10 números. Aunque modifique ligeramente el algoritmo de rand() (por ejemplo metiendo una constante "mágica") no creo que puedas sacarlo.
Este es el codigo fuente de rand()
Y como ves se necesita de una semilla 'seed'. Se suele escoger la hora del sistema como semilla para generar distintos números aleatorios en cada ejecución. Por tanto si nisiquiera sabes la semilla utilizada, me parece a mí que poco vas a poder sacar en claro.
S2 |
|
| Volver arriba | |
 |
rapers
Registrado: 01 Jun 2011 Mensajes: 3
| Publicado: 02/06/2011 12:00 pm | | | Título: |
| No se la ha inventado habra modificado en alguna parte el algoritmo de rand()...me han pasado en otro foro un programa que calcula el desplazamiento de 32 bits LFSR...basta con pasar a binario el número pero es que son 1000:
Esto te devuelve una serie de exponenciales en función de x que son las veces que desplaza el número. El caso es que hay que meter número a número y pueden empezar a repetirse hasta el 900 por ejemplo...y meter 900 números a mano es un trabajo inhumano. |
|
| Volver arriba | |
 |
untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 03/06/2011 7:34 am | | | Título: |
| Hola, Mi texto no tiene nada que ver con el tema. Es una pregunta acerca del código fuente de rand. Me gustaría hacer una implementación en assembly, de ahí mi pregunta. Aunque primero he de escribir que el estilo de codificación es inmejorable. Veo que se hace una multiplicación por un número y el resultado se suma a otro para tomar el resto de una división entera. Bien, mi pregunta sería: Esos 2 números han de ser exactamente esos o pueden ser otros 2 cualquiera. Y, ¿por qué?. Veo que el número mayor es igual al máximo de un UINT dividido entre 3 y supongo que el segundo es arbitrario. A ver si alguien me lo puede explicar. |
|
| Volver arriba | |
 |
|
|