Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2894 connectés 

  FORUM HardWare.fr
  Programmation

  [assembleur] comment genereer un nombre aleatoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[assembleur] comment genereer un nombre aleatoire

n°91223
swich
snps
Posté le 20-01-2002 à 17:11:54  profilanswer
 

genre simplement generer 0 ou 1
thx

mood
Publicité
Posté le 20-01-2002 à 17:11:54  profilanswer
 

n°91349
246tNt
Resistance is futile
Posté le 20-01-2002 à 21:21:50  profilanswer
 

... En dos moi je lisait le contenu de la memoire video sur 1ko et je faisait des xor entre un byte et le suivant et a la fin ca onnait un truc un peu n'importe koi ...

n°91358
noelemac
Posté le 20-01-2002 à 21:46:45  profilanswer
 

pour un nombre aleatoire on utilise la formule suivante:
nbalea = X * 427419669081 mod 999999999989
ou x est un nombre quelconque. En general, pour X on prend l'heure systeme (int 21h, 2Ch)
pour l'interruption :  
 
mov ah,2Ch
int 21h
;et on a en sortie :
CH = heure
CL = minutes
DH = secondes
DL = centièmes de seconde
 
Ok cette methode est un peut tordu mais est tres fiable. Elle est d'ailleur utilisé dans le logiciel de calcule formel Maple pour généré des nombres pseudo-aléatoire.
 
Pour le code assembleur exacte, je ne l'ai plus.

n°92321
swich
snps
Posté le 23-01-2002 à 12:11:20  profilanswer
 

ok mercci bien, mais bon en fait le prob que j'ai c'est ke je dois generer environ 100 nbres aleatoires.. et donc meme si je fais ca, ben j'aurais les memes nombres non ??
 :cry:

n°92333
youdontcar​e
Posté le 23-01-2002 à 12:30:23  profilanswer
 

non, c'est une suite en fait. tu passes à l'algo le nombre aléatoire que tu viens de générer. par ex en C (si je me souviens bien), rand = rand*n1 + n2.
 
au début du programme, rand est initialisé toujours de la même manière, avec un int hardcodé : la graine. à chaque nouvelle génération, on utilise la valeur rand précédente pour générer la nouvelle. c'est pourquoi à chaque fois que tu lances le programme, tu auras toujours les mêmes nombres 'aléatoires'. randomize (srand()) iniatilise la graine avec l'heure, histoire de générer des nombres différents.
 
donc en assembleur ça donne un truc comme ça :
 
_rand dd 457879761
 
rand:
   mov eax, [_rand]
   imul eax, 784731
   add eax, 121785
   mov [_rand], eax
   ret
 
pour initialiser la graine, tu utilises l'heure. les nombres que je file, c'est n'importe quoi, cherche voir sur le net pour des bons trucs qui donnent une bonne période (ie le nombre de tirages maximal avant de retomber sur les mêmes nombres).
 
et si tu veux un truc qui torche, tu utilises le mersenne twister : http://www.math.keio.ac.jp/~matumoto/emt.html

n°92335
youdontcar​e
Posté le 23-01-2002 à 12:31:59  profilanswer
 

et si tu veux un ensemble de définition, par ex rand = [0..15], tu copies la variable avant de l'utiliser :
 
call rand
mov eax, [_rand]
and eax, 15

n°92339
youdontcar​e
Posté le 23-01-2002 à 12:36:01  profilanswer
 

hmm, je suis même plus sûr de l'algo en fait :D
 
pour obtenir un truc encore plus tordu, tu peux utiliser ror / rol :
 
mov eax, ...
imul eax, ...
ror eax, ...
add eax, ...
ror eax, ...
mov ...

n°92414
Mara's dad
Yes I can !
Posté le 23-01-2002 à 15:18:24  profilanswer
 

J'ai cherché çà :
random number algorithm ASM
sur google, et j'ai trouvé çà :
http://www.programmersheaven.com/zone5/cat18/1372.htm


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°92780
swich
snps
Posté le 24-01-2002 à 11:52:38  profilanswer
 

thx..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [assembleur] comment genereer un nombre aleatoire

 

Sujets relatifs
PHP Nombre de champs d'un tableau[assembleur] pourquoi ca marche po ??
[PHP + MS SQL SERVER] : garder des 0 devant un nombre ....pff je galere en assembleur..
en assembleur, c koi le carry bit ?? thxl'assembleur facile
page php aleatoire...[Java] Classes multiples limiter le nombre d'instances d'une classe
[python] : calcul de nombre premierPhp, un nombre a virgule ?
Plus de sujets relatifs à : [assembleur] comment genereer un nombre aleatoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR