GÉNÉRER UN NOMBRE VRAIMENT ALÉATOIRE

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 18 janv. 2004 à 12:51
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 5 mai 2006 à 19:08
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/19601-generer-un-nombre-vraiment-aleatoire

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 mai 2006 à 19:08
pour le code c'est vraimant le minimum.

"diviser par son numéro IP fois un nombre pseudo aléatoire tiré avec "rnd", et tout ceci coupé en 4 caractères pris au hasard dans la chaîne"
Cette opération ne rend surment pas un nombre aléatoire car le nombre sorti avec le générateur pseudo aléatoire est prévisible, l'IP de meme.

5/10
Mac2550 Messages postés 9 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 11 septembre 2005
11 sept. 2005 à 18:34
L'aléatoire c'est la mutliplication de l'heure, de la minute et de la seconde actuelle, diviser par son numéro IP fois un nombre pseudo aléatoire tiré avec "rnd", et tout ceci coupé en 4 caractères pris au hasard dans la chaîne...

En gros pour être vraiment aléatoirement, l'utilisation de l'heure actuelle (heure, minute, seconde) est pratiquement obligatoire, et pourquoi pas la date non plus?
cs_clad87 Messages postés 42 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 24 août 2015
16 juin 2005 à 01:20
Fix(Rnd * 99999) pcpunch, meerci xD
Niconapo Messages postés 13 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 26 novembre 2011
21 janv. 2004 à 11:44
Au début quand j'ai commencé a developper.. j'aurais aimé avoir des sources de ce genre mais malheureusement il n'y en avait pas et c'etait beaucoup plus dur de s'y mettre.
Si vous n'êtes pas content libre à vous mais je suis sur de faire des heureux avec ça..
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 janv. 2004 à 08:38
Pour faire un peu plus aléatoire, il faut par exemple utiliser un timer et faire une boucle d'attente en attendant que l'on presse une touche, et se servir alors de cette temporisation pour initialiser le générateur pseudo aléatoire.
cs_guifr Messages postés 105 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 19 mai 2005
18 janv. 2004 à 22:10
pcpunch --> Certes, j'avais dû utiliser la fonction Rnd() pour créer un générateur de labyrinthe, or, dans ce cas je ne me base pas sur la totalité des décimales, vu que je n'ai à faire le choix qu'entre 4 directions... Et là, le résultat était flagrant, c'était cyclique, dommage que je ne puisse insérer une image, ce serait flagrant...

En ce qui concerne le programme de Niconapo (puisque c'est de celà qu'il s'agit), bon il ne s'agit vraiment pas d'une méthode "originale" de générer une série de nombre pseudo-aléatoires, elle ne fait que reprendre la fonction originale, n'ajoute rien, voir enlève des trucs vu qu'il y a moins de décimales...
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
18 janv. 2004 à 20:02
Niconapo, j 'avais pas vu que c'etait ta Src!!! tu trouve pas que poser un Zip pour 2 lignes qui de surcroit ne sont pas de toi, et en plus d'une simplicité enfantine!!! c'est un peu Naze!!!

Enfin j'vai bientot poster une nouvelle source(Zip+Capture) :
MsgBox "Nous sommes le " & Date

Sympa non ????
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
18 janv. 2004 à 19:52
Niconapo--->c'est vrai mais pas si tu place un Randomize avant, il doit certainement s'agir d'un oubli de la part de reinfield le connaissant!!!

Randomize
a = Int(5000 * Rnd)
List1.AddItem a
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
18 janv. 2004 à 19:46
Guifr---> comme j'etais septique!!! g fais ce petit test avec 3 listbox

List1.Clear
'1er cycle
For i = 0 To 1000
Randomize
List1.AddItem Fix(Rnd * 99999)
Next i
List2.Clear
'2eme cycle
For i = 0 To 1000
Randomize
List2.AddItem Fix(Rnd * 99999)
Next i
List3.Clear
'Verification
For i = 0 To 100
For a = 0 To 100
If List1.List(i) = List2.List(a) Then List3.AddItem a
Next a
Next i

ça donne 2 cycle de 1000 nombres aléatoire stocké dans list1 et list2
Le list3 reprend les nombres tirer dans les 2 listes!!!

Sur plusieurs tirage succesif, aucun nombre en commun dans les 2 listes, ni aucun nombre identique dans les listes donc je me dit que c pas si pseudo alétoire que ça!!!!
Niconapo Messages postés 13 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 26 novembre 2011
18 janv. 2004 à 19:42
Pour pcpunch hihi oui exact cela fonctionne ;)
Je vais éditer la source et mettre ce code qui est encore moins long et plus simple..
Niconapo Messages postés 13 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 26 novembre 2011
18 janv. 2004 à 19:41
Pour répondre à Renfield et bien je vais tout simplement te dire ..
Le nombre créer n'est pas réelement aléatoire..
Tu obtiendra absolument à la première exécution du code ses nombres :
3527,2667,2897 etc etc..

Voilà tout le problème du 'simple' a = Int (5000 * rnd )
cs_guifr Messages postés 105 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 19 mai 2005
18 janv. 2004 à 19:10
Le rnd c'est bien, mais c'est pas suffisant, si vous avez créé des programmes ayant très (trop ?) souvent recours à rnd, vous vous rendrez vite compte que comme générateur de nombre pseudo aléatoire on peut mieux faire, et rnd se montre en fait relativement cyclique (donc pour le hasard, c'est un peu nul)...
J'ai pas encore testé ton code dans ce genre de programme... à voir...
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
18 janv. 2004 à 12:53
DSl Renfield, en mm tps lol!!! ++ :)
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
18 janv. 2004 à 12:52
Oui c bien, mais un peu long pour si peu!!!
Je te le fait en 2 lignes!!!!

Randomize
Text4 = Fix(Rnd * 99999)

++
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 janv. 2004 à 12:51
Qu'as tu contre un simple a = Int (5000 * rnd )
Rejoignez-nous