begin process at 2010 03 22 09:23:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > PORJET GALEA (GENRATEUR DE NOMBRE ALEATOIRE!!!! SANS RND!)

PORJET GALEA (GENRATEUR DE NOMBRE ALEATOIRE!!!! SANS RND!)


 Information sur la source

Note :
Aucune note
Catégorie :Maths Niveau :Initié Date de création :29/10/2003 Vu / téléchargé :2 877 / 242

Auteur : portnawak666

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Comme le titre l'indique Galéa génère des nombre aléatoire compris entre 0 et 1 sans utilise le meme generateur que windows a essye!!!


 Conclusion

Laissez moi vos commentaires!!!! et dîtes moi ce que vous en pensez

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip PROJET HACKED(SIMULATION)

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) COMPILATION A LA VOLÉE, INTERPRÉTER UNE FONCTION MATHÉMATIQU... par sergeb44
Source avec Zip Source .NET (Dotnet) PISH2010-VB2008 par SaintMaur
Source avec Zip Source avec une capture PI-SH-2010-VB6 par SaintMaur
Source avec Zip Source avec une capture CHIFFRAGE ET DECHIFFRAGE FONCTION AFFINE par tresorsdevie
ALGORITHME DE NIVEAU POUR LA RÉSOLUTION DU MÉTHODE POTENTIEL... par sagessekaye

Commentaires et avis

Commentaire de BruNews le 29/10/2003 18:18:40 administrateur CS

le meme generateur que windows ???
Ce sont les progs qui en generent.

Commentaire de Cyberdevil le 29/10/2003 19:38:48

il parlait du Rnd de visual basic je pense !

Commentaire de orisa le 29/10/2003 21:34:57

Juste une remarque. ça ne génère pas un nombre aléatoire !

et d'une les résultats sont totalement prévisible,
et de deux le cycle de retour des mêmes valeurs est trop petite.

Toutes les 18 valeurs générés on tombe sur la même. (seul la toute première diffère : 0,5 le premier cycle pour 0,43808 les cycles suivants) bref on a :

0,43808 (ou 0,5la première fois)
0,281952256595828
0,526867009158683
0,61628125
0,122524513334208
0,655070633440572
0,35211862769184
0,567619479797542
0,598313525237776
0,28
0,462915
0,2075634720138
0,70258035422382
0,178722688326019
0,256195344792982
0,222657488355328
0,4319634532557
0,64210854715202

0,43808
0,281952256595828
0,526867009158683
0,61628125
...

voila voila, désolé :)

Commentaire de Helkanen le 30/10/2003 12:11:37

ça serait pas mieux déjà avec un gettickcount ?

Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

et tu fais :
Dim rndStart as Long
rndStart = GetTickCount()

et pis là tu te débrouilles comme tu sais le faire

ça te donne au millième de seconde pres l'heure de l'ordi... donc y'a peu de chances que tu lances ton prog exactement au même moment !
d'ailleurs, je me trompe peut-etre, mais il me semble que Randomize qui initie la fonction Rnd utilise l'heure de l'ordi, genre gettickcount...
et comme te le fait remarquer orisa, c'est pas génial de l'aléatoire comme ça, ça fait une boucle beaucoup trop courte...
utilise des long, reprend l'heure apres un délai généré aléatoirement (par ton algo)... à mon avis l'effet aléatoire sera beaucoup plus puissant...

en tout cas, ça vient d'une bonne idée...

allez bonne prog...

Helkanen

Commentaire de Helkanen le 30/10/2003 14:16:40

resalut !
ça y est !
j'ai essayé avec un GetTickCount (même plusieurs) et j'arrive à faire qqchose d'aléatoire, malgré quelques failles de temps en temps...
voilà, j'ai fait un truc de barbare, mais j'ai essayé et la moyenne varie entre 4.8 et 5.2 sur quelques lancers.
et voici des résultats :

0,592919384214007
0,728013871569369
0,415835657253047
0,254576433656851
0,216132337134248
0,593392628136009
0,801554434255433
0,380002726033585
0,381821105541345
0,313917576199207
0,347184199275632
0,447528415401571
0,859452924190291
0,076951145611089
0,565592164754285
0,74968771803407
0,162219816201855
0,510923820725132
0,678922483040097
0,919128753481067
0,615590002452243
0,39652767132222
0,233253511767732
0,414736072037083
0,762541046236931
0,250933772821125
0,777506288168624
0,637384528649925
0,191478528263151
0,371406440967236
0,471284900257501
0,540306135154584
0,540306135154584
0,407866138814537
0,562914816330974
0,586529129874961
0,416411469392262
0,232748584058229
0,502156203864129
0,241387604951361
0,784314240221022
0,692151765851463
0,575053523810348
0,320013331864923
0,429216113700395
0,449977038179524
0,388854125896103
0,527392631391049
0,458337568587957
0,449043141145228
0,484743533918321
0,344055410941856
0,577102765217628
0,569692407057047
0,355397688968054
0,545626806109503
0,769209016133948
0,690458335671025
0,703710028206128
0,132453190178207

à chaque fois que tu réessayeras, ça changera complètement.

tu initialises tes valeurs de a et de b (presque) aléatoirement :
b = GetTickCount Mod &H1000 + 1 'un nombre aléatoire entre 1 et 32000 (256*256)
a = GetTickCount Mod &H10 + 1   'un nombre aléatoire entre 1 et 10

ensuite, tu changes un peu ton code:

If b <= 0 Then
b = GetTickCount Mod &H1000 + 1 'max 32000 et des poussières
Else
b = b - 1
End If

'pas de 0 si possible, alors :
If b <= 0 Then b = 5547 '5547 pris au hasard

et :

If a >= 17 Then
a = GetTickCount Mod &HF + 1 'max 17
Else
a = a + 1
End If

'et comme on sait jamais, on préfère ne pas avoir de 0, donc :
If a <= 0 Then a = 94 '94 pris au hasard

'puis :
While alea1 > 100
alea1 = alea1 / 10
Wend
alea1 = alea1 - Int(alea1)

là, je prends pas directement le premier ou le deuxième chiffre parce qu'en prenant le premier chiffre, on n'aura jamais de valeur entre 0 et 0.1, et en prenant le deuxième, on trouve souvent les mêmes valeurs, le 3eme chiffre est donc le meilleur...
je fais pareil avec b

et pour calculer la moyenne, qui me permet de vérifier mes dires :

alea = (alea1 + alea2) / 2
nbLancers = nbLancers + 1
Moyenne = Moyenne + (alea - Moyenne) / nbLancers

voilà

pour l'optimisation, même si je ne fais pas grand chose, tu devrais penser à mettre des valeurs plus petites dans tes intervalles des Timer (genre 5,7,11), virer le Timer4 et virer les affichages
mets un log de tes valeurs si tu veux

strLog = strLog & vbCrLf & Format(alea, "0.###############")

comme ça ça va bcp plus vite ! (même si c'est toujours pas génial...)

bonne prog, et adapte ça vite fait en une bonne fonction...


Helkanen

ps: désolé je t'ai maché le travail...

Commentaire de Helkanen le 30/10/2003 14:56:33

voilà, j'ai fait un module...
si tu veux aller le voir...
http://www.vbfrance.com/code.aspx?ID=17537
ps : merci pour l'idée...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales