Fonction vraiment aléatoire

Description

Comme vous le savez la fonction Random que propose Visual Basic n'est pas réellement aléatoire, c'est un algorithme qui respecte la loi des grands nombres. La raison est que faire une fonction qui retourne un nombre de façon aléatoire est très compliqué.
Voici une fonction qui renvoie un nombre qui est réellement imprévisible, l'astuce:utiliser le temps...

Source / Exemple :


'Fonction générant le nombre aléatoire-------------------------'
Public Function Alea() As Double                               '
                                                               '
TempAlea = "0," 'comme rnd, 0<Alea<1, par conséquent seules les décimales importent
                                                               '
For k = 0 To 9 'il y a 10 décimales                            '
          Call QueryPerformanceCounter(TimeStart)              '
Randomize                                                      '
For i = 0 To 100000 * Rnd                                      '
Next i                                                         '
'action qui ralenti le processus (d'une facon psudo-aléatoire) '
          Call QueryPerformanceCounter(TimeStop)               '
                                                               '
Calctps = CStr(TimeStop - TimeStart) / Frequency * 1000        '
'Nous avont ainsi un temps d'execution qui sera toujours différent
                                                               '
Randomize                                                      '
TempAlea = TempAlea & "" & Mid$(Calctps, 13 * Rnd + 3, 1) & "" '
Next k                                                         '
                                                               '
Alea = TempAlea 'Alea devient non pas une chaine mais un nombre à virgules
                                                               '
End Function                                                   '
'--------------------------------------------------------------'

Conclusion :


La fonction est dans le zip accompagnée d'un programme qui permet de vois si la loi des grands nombres est vérifiée. C'est le cas mais beaucoup moins bien qu'avec la fonction Random.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.