Accueil





Générateur de nombres pseudo-aléatoires de George Marsaglia



source : http://wiki.tcl.tk/19710

Pour les cas où la fonction rand n'est pas assez aléatoire à votre goût...


Variables à déclarer
variable randgen_mod [expr {wide(256)*wide(256)*wide(256)*wide(256)-5}] variable randgen_fac [expr {wide(256)*wide(32)}] variable randgen_x1 [expr {wide($::randgen_mod*rand())}] variable randgen_x2 [expr {wide($::randgen_mod*rand())}] variable randgen_x3 [expr {wide($::randgen_mod*rand())}]

Procédure
proc randgen {factor offset} { variable randgen_mod; variable randgen_fac; variable randgen_x1; variable randgen_x2; variable randgen_x3 set xn [expr {($randgen_fac * ($randgen_x3 + $randgen_x2 + $randgen_x1)) % $randgen_mod}] set randgen_x1 $randgen_x2 set randgen_x2 $randgen_x3 set randgen_x3 $xn return [expr {int(($xn / double($randgen_mod) * $factor) + $offset)}] }

©2005-2016 Menz Agitat