Des nombres aléatoires en Assembleur

Fermé
Mik - 22 déc. 2001 à 19:14
 naholyr - 23 déc. 2001 à 15:39
Bonjour. Dans le cadre d'un projet entre étudiants, nous réalisons un petit programme en Assembleur type 8086. Pour mener à bien notre projet, nous avon besoin de définir une procédure qui puisse nous calculer un nombre aléatoire entre 0 et n.
Après différentes tentatives, nous n'y sommes pas parvenus, les nombres générés s'avérant plus ordonnés qu'aléatoires.
Pourriez vous nous aider ?
Comment faire pour générer des nombres aléatoires en Assembleur 8086 ?
Merci de votre aide.
Mik
A voir également:

2 réponses

Pourquoi ne pas utiliser des fonctions pseudo-aleatoires mathematiques ?
l'algo generalement utilisé est le suivant:

================

germe: un entier // en anglais: "seed" tu as du deja entendre ca
// cette variable doit etre globale, reserve lui un espace memoire.

initialiser: l'action (n: un entier)
algo:
germe <- n;

nombre_au_hasard: la fonction (limite: un entier) -> un entier
algo:
germe <- f ( germe );
-> germe mod limite;

=================

ou f est une fonction idealement chaotique.
Comme en ASM ca sera tres compliqué d'avoir une fonction vraiment satisfaisante, vous pouvez vous contenter d'un germe sur 32 bits, et de la fonction suivant (tres connue)
f(x) = 4 * x * ( 1 - x )

les resultats sont assez satisfaisants pour une limite sur 8 bits ( ce qui est deja pas mal, pour une fonction tres simple ).

pour avoir un truc vraiment bien, essaye de reinitialiser le germe regulierement, avec une valeur dependant de l'horloge.
1
Mister BeeGee Messages postés 1415 Date d'inscription vendredi 10 août 2001 Statut Membre Dernière intervention 25 mai 2008 191
23 déc. 2001 à 07:59
Avez vous utilisé l'horloge ? Les centièmes de seconde ? Quelle est la valeur de n que vous vous étiez fixés ?
0
Je dois générer des nombres aléatoires entre 1 et 4 inclus.
J'ai effectivement pensé à l'horloge système ( interruption 21h - 2Ch ) mais vous savez, aujourd'hui les ordinateurs sont ultra rapides et lors de l'éxécution du programme, même si je choisis les centièmes de secondes, la procédure random va me renvoyer quelques dizaines de fois le meme nombre avant de passer au suivant, car l'ordinateur aur éxécuté la même fonction plusieurs fois en 1 centième de seconde...
0
Mister BeeGee Messages postés 1415 Date d'inscription vendredi 10 août 2001 Statut Membre Dernière intervention 25 mai 2008 191 > Mik
23 déc. 2001 à 11:50
OK ! Je n'ai pas d'autres suggestions. Désolé !
0