Rechercher : dans
Par :

Des nombres aléatoires en Assembleur

Dernière réponse le 23 déc 2001 à 15:39:26 Mik, le 22 déc 2001 à 19:14:08 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Des nombres aléatoires en Assembleur » dans :
Générer des nombres aléatoires efficacement avec rand() Voir Générer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Exercice assembleur x86 nombre premier VoirIntroduction Notions abordées dans cet exercice Enoncé Rappel Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur...
[Photofiltre]Réaliser un assemblage de 2 images VoirPhotofiltre est un logiciel de retouche d'image. Cette astuce fonctionne aussi bien avec Photofiltre qu'avec Photofiltre Studio Dans ce cas précis, Photofiltre va permettre d'assembler un collage c'est-à-dire de coller une deuxième image (en...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...
Introduction à l'assembleur VoirLes prérequis nécessaires Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur : des informations en binaire, soit des 0 et des 1). Il dépend donc fortement du type de processeur. Ainsi il...
Assembler un PC VoirDe l'assemblage d'un ordinateur Un ordinateur de type PC est modulaire, c'est-à-dire qu'il peut être monté en assemblant des éléments matériels de différents constructeurs, afin d'obtenir un ordinateur conforme à ses besoins. Les éléments...

1

Mister BeeGee, le 23 déc 2001 à 07:59:44

Avez vous utilisé l'horloge ? Les centièmes de seconde ? Quelle est la valeur de n que vous vous étiez fixés ?

Répondre à Mister BeeGee

2

Mik, le 23 déc 2001 à 10:12:32

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...

Répondre à Mik

3

Mister BeeGee, le 23 déc 2001 à 11:50:48

OK ! Je n'ai pas d'autres suggestions. Désolé !

Répondre à Mister BeeGee

4

 naholyr, le 23 déc 2001 à 15:39:26

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.

Répondre à naholyr
Collection CommentÇaMarche.net