rand
Modérateur : xcasadmin
rand
La commande rand ne fonctionne plus comme avant :
N:=5000
L:=seq([rand(0,1),rand(0,1)],j=1 .. N )
scatterplot(L,affichage=point_point) ;
donne des points bien alignés,
c-a-d. il parait que des tirages consécutifs ne sont pas indépendants (0.9.4)
Avant (0.9.0) c'était OK, les points étaient équirepartis dans le carré.
A.
N:=5000
L:=seq([rand(0,1),rand(0,1)],j=1 .. N )
scatterplot(L,affichage=point_point) ;
donne des points bien alignés,
c-a-d. il parait que des tirages consécutifs ne sont pas indépendants (0.9.4)
Avant (0.9.0) c'était OK, les points étaient équirepartis dans le carré.
A.
Re: rand
c'est le generateur congruentiel que j'utilise qui n'a apparamment pas de bonnes proprietes, c'etait RtlUniform from Native API
(cf. http://en.wikipedia.org/wiki/Linear_con ... _generator), je passe a celui de Numerical Recipies.
Il faudra que je refasse tous les tests
(cf. http://en.wikipedia.org/wiki/Linear_con ... _generator), je passe a celui de Numerical Recipies.
Il faudra que je refasse tous les tests
Re: rand
Et si j'ose une suggestion...?parisse a écrit : Il faudra que je refasse tous les tests
G. Fleury & al. ont passe au crible pas mal de generateurs:
"Simulation a evenements discrets, modèles déterministes et stochastiques", Eyrolles 2007
(chapitre 5)
Il se trouve que le generateur basique x_{n+1} = 16807 x_n mod (2^31-1)
s'en sort pas mal du tout (cf page198)
(et, bien sur, on peut faire mieux que cela).
Ainsi on pourra s'en passer de l'api qui nous fait de (mauvaises) surprises?
Re: rand
Dommage, j'ai deja change, et pas envie de refaire tous les binaires tout de suite. Que disent-ils de numerical recipies?
Sinon, je n'aime pas trop l'idee d'avoir c==0, car du coup on est oblige de faire attention a 0.
Sinon, je n'aime pas trop l'idee d'avoir c==0, car du coup on est oblige de faire attention a 0.
Re: rand
Bien sur ! Cet exemple "jouet" ou suggestion de se passer de l'APi étaient dans l'esprit de "depannage" (si jamais de tests mentionnes necessitaient bcp de temps etc.)parisse a écrit :Dommage, j'ai deja change, et pas envie de refaire tous les binaires tout de suite.
Sinon, je n'aime pas trop l'idee d'avoir c==0, car du coup on est oblige de faire attention a 0.
Mais si le patch est deja en route, j'ai rien a dire, sauf bien evidemment "Merci"!
Je ne trouve pas celui-la sur leur liste...parisse a écrit : Que disent-ils de numerical recipies?
(Mais, par curiosite, je vais essayer de contacter l'auteur et relayer l'info)
Re: rand
bon, j'ai compris pour les droites: il s'agit de 18 droites de pente -18, car -18 etait le coefficient a de u_{n+1}=a*u_n+c mod m
Avec celui de numerical recipies, on a a=1664525, donc ca ne se voit plus.
Avec celui de numerical recipies, on a a=1664525, donc ca ne se voit plus.
Re: rand
En effet; mais si je comprends bien, en general un generateur peut presenter des problemes "multidimensionnels", c-a-d allignements dans l'espace R^n (ou bien dependance plus ou moins apparente de n tirages consecutifs). Ou un tas d'autres defauts...
Momentanement deborde, je ne pouvais pas encore demander l'avis d'expert (mais je n'ai pas oublie).
Momentanement deborde, je ne pouvais pas encore demander l'avis d'expert (mais je n'ai pas oublie).
Re: rand
Bonjour
Sur le même thème : en lisant divers messages sur le forum, je viens de comprendre que Xcas ne réinitialisait pas le générateur de nombres aléatoires à l'ouverture d'une session... N'ayant pas fait attention avant, lors d'une séance info, mes élèves avaient les mêmes listes de nombres aléatoires. Gênant.
Si j'ai bien compris il faut effectuer un srand(NULL) avant d'utiliser la commande rand().
Ne serait-il pas possible que ce srand(NULL) soit effectué par défaut à l'ouverture de la session ? Ou est-ce un choix qui facilite d'autres opérations ?
Sur le même thème : en lisant divers messages sur le forum, je viens de comprendre que Xcas ne réinitialisait pas le générateur de nombres aléatoires à l'ouverture d'une session... N'ayant pas fait attention avant, lors d'une séance info, mes élèves avaient les mêmes listes de nombres aléatoires. Gênant.
Si j'ai bien compris il faut effectuer un srand(NULL) avant d'utiliser la commande rand().
Ne serait-il pas possible que ce srand(NULL) soit effectué par défaut à l'ouverture de la session ? Ou est-ce un choix qui facilite d'autres opérations ?
Re: rand
L'interet d'avoir toujours la meme graine d'initialisation, c'est de pouvoir debuguer facilement qqchose qui fait intervenir de l'aleatoire (et aussi faire tourner des tests de regression avec de l'aleatoire).
Maintenant, vu l'importance que prennent les stats dans les programmes de lycee, ce serait sans doute une bonne idee de faire un srand(NULL) automatiquement dans xcas et pas dans icas.
Maintenant, vu l'importance que prennent les stats dans les programmes de lycee, ce serait sans doute une bonne idee de faire un srand(NULL) automatiquement dans xcas et pas dans icas.
Re: rand
J'ai fait ma petite enquete (enfin...); on m'a indique des traveaux de P. L'Ecuyer.parisse a écrit :Que disent-ils de numerical recipies?
http://www.iro.umontreal.ca/~lecuyer/my ... estu01.pdf
Il ne parle pas explicitement de NumericalRecipes, mais constate que les generateurs modulo
puissance de 2 sont "mauvais" (page 30).
Le vieux LCG(2^31-1, 16807, 0) et d'autres generateurs modulo un petit nombre premier sont juges
"un peu mieux", mais aussi "inacceptable" a cause d'une petite periode et des echecs aux tests.
"LCGs with moduli up to 2^61 fail several tests and should be discarded". Voila...
Il parait que la techonologie de pointe c'est le Mersenne Twister (e.g. Maple, GNU SciLib)
http://www.math.sci.hiroshima-u.ac.jp/~ ... T/emt.html
A.
Re: rand
Il paraît qu'il est libre (GNU) et utilisé aussi dans Python 3 (http://fr.wikibooks.org/wiki/Math%C3%A9 ... _en_Python)Alek a écrit :Il parait que la techonologie de pointe c'est le Mersenne Twister (e.g. Maple, GNU SciLib)
Donc sans doute un bon choix
Re: rand
je vais regarder ca, pour l'instant je travaille sur l'integration de lapack (et peut-etre atlas) pour avoir de l'algebre lineaire numerique rapide.