Hola, mi pregunta es muy teórica y de NERD, pero bue...
como hace la función random ???
Usa números primos ?
Ve la hora de reloj ?
Si alguien sabe por favor díganme...
Gracias
| ||||
¿Te referis a algun lenguaje en particular? Esto es lo que hace practicamente la implementacion de VC++ (srand y rand):
Código:
Se le puede pasar la hora del reloj como seed tranquilamente. void srand(unsigned int mySeed) { seed = mySeed; } int rand() { return(((seed = seed * 214013L + 2531011L) >> 16) & 0x7fff); }
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO Última edición por Eternal Idol; 05/04/2005 a las 11:09 |
| ||||
jaja, y return(((seed = seed * 214013L + 2531011L) >> 16) & 0x7fff); que corno es ??? jaja, bueno, gracias por tu respuesta, ya tengo una idea más certera, pero todavía no lo entiendo como quiero entenderlo... Gracias y saludos
__________________ Esteban Quintana |
| ||||
En sintesis es una ecuacion, por eso siempre que uses el mismo seed los valores generados van a ser (en cadena) los mismos. >> 16 es equivalente a / 66666, lo que hace es empujar los bytes 16 veces a la derecha (shr de asm). & 0x7FFF es una operacion de bits de tipo AND.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| ||||
>>16 no es /666666 en realidad es /2^16=2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2 El & lo que hace es descartar bits.... Y pues creo que te deja 15 bits( si el numero es mas grande a lo que aguante 15 bits(32*1024) entonces descarta los bits de la izquierda.... Saludos |
| ||||
Si, es 65536 en realidad, tambien hace cinco dias de la pregunta y no cambia la teoria. El & es el operador de and y punto, es una comparacion de bits entre el primero y el segundo operando, si los dos son 1 el bit queda a uno, de cualquier otra manera (siendo cualquiera de los dos 0) el bit queda a 0.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| ||||
Gracias gente por las respuestas...Veo que saben bastante del tema... Saludos PD: Amigos, este foro es para compartir conocimientos, intenten no discutir ni agredirce entre ustedes !!! Sean constructivos con sus respuestas !!!
__________________ Esteban Quintana |