GT Turbo Posted November 29, 2005 Report Share Posted November 29, 2005 Hier soir il me fallait des nombres aléatoires, une routine pour cela. J'ai essayé de bricolé un truc comme sur les micros Atari (Utilisation de registres en mouvement, adresse de décodage de l'écran, etc..) mais petit soucis, les 3/4 des registres ne sont accessibles qu'en écriture, les seules accessibles en lecture, ben la synchro est t'elle qu'ils ne sont pas si aléatoires que cela, donc je suis prèt a tout prendre. GT Link to comment Share on other sites More sharing options...
Azrael Posted November 29, 2005 Report Share Posted November 29, 2005 O peut aller voir là : http://www.iro.umontreal.ca/%7Elecuyer/myftp/streams00/c/ http://www.irisa.fr/caps/projects/hipsor/HAVEGE.html (pour les intel/athlon, interessant car utilise la mémoire volatile) plus généralement : http://random.mat.sbg.ac.at/links/rando.html Le plus casse pied c'est qu'en général c'est en calcul flottant... encore de la doc à déchiffrer. Link to comment Share on other sites More sharing options...
GT Turbo Posted November 29, 2005 Author Report Share Posted November 29, 2005 J'ai trouvé ceci sur l'Atari-forum (Posté par NyH) et a priori trouvé sur le net : random32: move.l seed(PC),D0 add.l D0,D0 bcc.s done eori.b #$AF,D0 done: move.l D0,seed rts seed: DC.L $12345678 END Voila la page pour les curieux Ca me plait beaucoup, court pas de truc de zinzin !! Link to comment Share on other sites More sharing options...
Azrael Posted November 29, 2005 Report Share Posted November 29, 2005 Ouais, mais court dans ce cas là ça veut dire pas très efficace (scientifiquement parlant) comme générateur de nombres aléatoires. Si ça te convient dans un premier temps on peut en rester là. GT un gros fainéant ! Link to comment Share on other sites More sharing options...
GT Turbo Posted November 29, 2005 Author Report Share Posted November 29, 2005 Azrael : Ouais, mais court dans ce cas là ça veut dire pas très efficace (scientifiquement parlant) comme générateur de nombres aléatoires.Si ça te convient dans un premier temps on peut en rester là.GT un gros fainéant ! Aléatoire mon c... j'ai fait des essais pratiques, pas ca....J'ai essayé les quelques lignes au dessus, et bien je recommandes pas.GT Turbo Link to comment Share on other sites More sharing options...
SebRmv Posted March 2, 2006 Report Share Posted March 2, 2006 Salut, comme moi aussi j'ai eu besoin de faire des nombres aléatoires, je vous propose ce petit algo (ça s'appelle ranrot quelque chose) Ca donne des résultats pas mal Pour initialiser, appeler random_init (ou mettre les graines que vous voulez dans le tableau), ensuite random_next calcule un nouvelle valeur sur 32 bits... Enjoy! Seb RANDGEN_J equ 3 RANDGEN_K equ 7 ; k > j RANDGEN_R equ 5 .text .68000 random_init: move.l #random_seeds,a0 move.w VC,d1 swap d1 move.w HC,d1 moveq #RANDGEN_K,d0 .init_seeds: eor.l #$31415926,d1 move.l d1,(a0)+ ror.l #8,d1 ror.l #5,d1 move.w VC,d2 swap d2 move.w HC,d2 add.l d2,d1 dbf d0,.init_seeds rts random_next: move.l #random_seeds,a0 move.l RANDGEN_J*4(a0),d0 add.w #RANDGEN_K*4,a0 move.l (a0),d1 moveq #RANDGEN_K-1,d2 .shift_seeds: move.l -(a0),4(a0) dbf d2,.shift_seeds add.l d1,d0 ror.l #RANDGEN_R,d0 move.l d0,(a0) rts .bss .long random_seeds: ds.l RANDGEN_K+1 Link to comment Share on other sites More sharing options...
SebRmv Posted March 2, 2006 Report Share Posted March 2, 2006 Je voulais juste ajouter que les valeurs initiales ne doivent pas être toutes nulles bien sur!!! Link to comment Share on other sites More sharing options...
Orion_ Posted March 5, 2006 Report Share Posted March 5, 2006 un petit truc que j'avais converti en 68000 d'une routine en C trouvé je sais plus ou ça marchais asser bien ^^ resultat dans d0, par contre ça donne un resultat 8bits ; Un VRAI random :) (pas comme celui du XBios ...) myrand: move.w seed8_1(pc),d1 move.b 0(a0,d1.w),d0 move.w seed8_2(pc),d2 add.b 0(a0,d2.w),d0 move.b d0,0(a0,d2.w) addq.b #1,d1 addq.b #1,d2 andi.b #63,d1 andi.b #63,d2 move.w d1,seed8_1 move.w d2,seed8_2 rts seed8_1: dc.w 29 seed8_2: dc.w 63 random8: dc.b 215,25,169,8,231,201,91,15,156,5,152,30,159,50,22,49 dc.b 28,148,157,123,58,3,156,236,46,78,50,157,186,170,233,138 dc.b 49,98,215,231,0,249,233,254,194,12,110,115,122,166,15,2,163 dc.b 237,143,30,54,5,45,199,201,106,184,136,44,175,197,11 Link to comment Share on other sites More sharing options...
SebRmv Posted March 12, 2006 Report Share Posted March 12, 2006 Alors pour renforcer encore un peu mon image de "macro man" voici le random next au gpu!! ça complète le code 68000 que j'ai donné au-dessus un usage typique est gpu_random_next_init r0 gpu_random_next r0,r1,r2,r3 ici, r3 contient la nouvelle valeur pseudo aléatoire Seb .macro gpu_random_next_init ;; \1 un registre movei #random_seeds,\1 .endm .macro gpu_random_next ;; \1, \2, \3, \4 quatre registres ;; \1 doit pointer sur random_seeds ;; la macro "gpu_random_next_init \1" sert a ca! ;; (en fin de macro, il pointe encore la) ;; initialiser avec "gpu_random_next_init \1" ;; le nouveau nombre pseudo-aleatoire est dans \4 addq #RANDGEN_J*4,\1 moveq #RANDGEN_K,\2 load (\1),\4 addq #(RANDGEN_K-RANDGEN_J)*4,\1 load (\1),\3 subq #4,\1 add \3,\4 .copy_seeds_\~: load (\1),\3 addq #4,\1 store \3,(\1) subq #1,\2 jr ne,.copy_seeds_\~ subq #8,\1 rorq #RANDGEN_R,\4 addq #4,\1 store \4,(\1) .endm Link to comment Share on other sites More sharing options...
SebRmv Posted April 28, 2006 Report Share Posted April 28, 2006 ça fait un petit moment que je voulais poster une version optimisée selon les bons conseils d'Azrael j'espère que l'attachement va marcher (j'ai laissé la vieille version en commentaire) Seb random.zip Link to comment Share on other sites More sharing options...
GT Turbo Posted April 29, 2006 Author Report Share Posted April 29, 2006 ça fait un petit moment que je voulais poster une version optimisée selon les bons conseils d'Azrael j'espère que l'attachement va marcher (j'ai laissé la vieille version en commentaire) Seb Macronator is back Link to comment Share on other sites More sharing options...
SebRmv Posted April 29, 2006 Report Share Posted April 29, 2006 Macronator is back Et cette fois, ça va ch.. !! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now