ETUDE DE FONCTIONS ALÉATOIRES

pekch Messages postés 51 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 7 juillet 2006 - 3 mai 2006 à 16:19
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 8 mai 2006 à 21:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37405-etude-de-fonctions-aleatoires

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 mai 2006 à 21:33
J'étais entrain d'écrire que je ne voyais pas ce que tu voulais dire, maintnenant je comprend miex...
Merci pour tes encouragements et pour Mersenne Twister
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 mai 2006 à 21:31
qu'est ce que je raconte !!!
je dis des bêtises
excuses moi je lis à l'envers

ignore le message précedent, sauf le bravo.
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
6 mai 2006 à 03:27
Salut! Félicitation ce travail est très interessant.
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
4 mai 2006 à 15:51
Us merci pour la fonction Randu je vais corriger sa le plus tôt possible mais pas tout de suite car l'étude est assez longue.

Par contre je n'aime pas tellement l'idée de transformer un nombre pair en nombre impair.

Pour la variable "a" en type String tu as 1000 fois raison.

Enfin je n'épilogue pas sur la remarque philosophique...



lexsty simuler la fréquence d'apparition des 6 numéros du Loto revient à étudier la densité dans un cas particulier et j'ai fait 2 fois cette étude une fois de facon peu rigoureuse mais pédagogiquement interressante, avec le graphique et une fois avec le test de khi² qui est une étude de l'ecartr à la fréquence type.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 mai 2006 à 10:43
Salut julien,

Gros boulot de recherche !

J'ai tout de même quelques remarques, en passant. J'ai pas tout lu et tout regardé, mais bon... si plus tard, je me plonge dedans, je sais par où commencer...

=

Pour ton histoire de l'algo RANDU.

Premier point : le dépassement de capacité est dû déjà au type utilisé : LONG... Il faut des variables DOUBLE.

Deuxième point : L'utilisons de la fonction MOD, fonctionne que dans la plage des nombres en LONG. C'est à dire que tu peux l'utiliser avec des DOUBLE à la condition de ne pas dépasser la limite 2147483647 (limite du type LONG) qu'alors le type DOUBLE va au-delà.

Par conséquent, il faut réécrire la fonction MOD, avec des instructions compatibles avec le type DOUBLE, pour toutes sa plage. Cette fonction peut être programmée comme suit :

=

Function MOD2(ByVal D As Double, ByVal N As Double) As Double
'Renvoi le modulo de D et N pour des nombres jusqu'à Double
'contrairement à MOD d'Excel ou de VBA

'Converti en entier
D Int(D): N Int(N)
'Calcul du reste
MOD2 = D - N * Int(D / N)

End Function

=

Ensuite, je ne reprends pas ton algo, mais j'ai encore qlq petites remarques...

Tu utilises la variable "a", en type String. Or, ici on ne fait que du calcul ! Un choix de type numérique, me semble beaucoup plus logique. Car, là tu forces VB à faire une conversion Texte vers Nombre, donc le type de "a" est "Variant"... c'est pas terrible en terme de vitesse, et tu risques des erreurs à mal définir le type.

-

Les lignes :

If X0 And 1 = 0 Then
MsgBox ("X0 doit être impair")
Exit Function
End If

IL serait plus souple, dans le cas où X0 est pair de le transformer en impair, non ?

avec, par exemple :
If X0 And 1 0 Then X0 X0 + 1

=

Ensuite, dans l'introduction du document Word (passe la correction automatique), tu écris : " ... je le prouve, de nombre 0,1495 est issu du hasard, je l'ai tapé sans réfléchir et par conséquent j'ai généré un nombre aléatoire."
Et là, je ne suis pas d'accord ! En effet, l'être humain n'est pas capable de bien simuler le hasard. C'est la raison pour laquelle on a une si mauvaise intuition à priori de la forme du hasard... IL est même intéressant d'étudier cette aspect, en étudier les biais. Récemment un petit article dans "Pour la Science" est sorti, montrant un certain nombre de biais que l'esprit humain utilise... mais bon, je n'arrête là.

Simuler du pur hasard n'est pas chose facile, d'autant que le champ de recherche peut vite devenir très grand.


Bravo tout de même pour ce gros travail !


Amicalement,
Us.
lexsty Messages postés 169 Date d'inscription samedi 10 décembre 2005 Statut Membre Dernière intervention 18 juin 2017
4 mai 2006 à 02:40
Bonjour Julien39.

Un test simple des fonctions pseudo aléatoires : arriver par exemple à simuler la fréquence d'apparition des 6 numéros du Loto de la Française Des Jeux.
RND de Visual Basic(avec l'utilisation de randomize) arrive à simuler à peu près bien,la fréquence de sortie de 5 numéros et pas plus à cause de sa période qui n'est pas assez grande.

Mersenne Twister par contre est autrement plus performant que RND.
Mersenne à une période de (2^19937)-1 (C'est très très grand).

Si tu intègres la fonction Mersenne Twister dans ta source,
ça sera très interressant.
Pour des petits tirages de 200 nombres (Dans tes analyses), RND est plus que parfait.
C'est bien d'avoir joint des documents sur les fonctions aléatoires.
pekch Messages postés 51 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 7 juillet 2006
3 mai 2006 à 16:19
interressant tout ca!
Rejoignez-nous