Générateur de dés...

Sujets variés concernant le développement en PureBasic
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Générateur de dés...

Message par Shadow »

Salut, je fais des petits test sur la fréquence de nombre (Dés).
Je regarde la sortie des nombre pour voir leur fréquence d'apparition.
Je suis très étonné, j'ai eu un cas tour 37 à 51 ou sur 15 lancer de 3 dés, pas un seul 6, c'est chelou quand même !
Imagine, sur un seule dé ne pas faire de 6 pendent 45 fois 8O
Moi je pense que l'ordi il triche :mrgreen:

Le code:

Code : Tout sélectionner

Global NewList Liste1.i()
Global NewList Liste2.i()
Global NewList Liste3.i()
Global NewList Liste4.i()
Global NewList Liste5.i()
Global NewList Liste6.i()
Global NewList ListeNombres.s()

Procedure EnregistreListe(Nombre.i, Boucle.i)
  
  Select Nombre.i
      
    Case 1
      AddElement(Liste1.s())
      Liste1.i() = Boucle.i
      
    Case 2
      AddElement(Liste2.s())
      Liste2.i() = Boucle.i
      
    Case 3
      AddElement(Liste3.s())
      Liste3.i() = Boucle.i
      
    Case 4
      AddElement(Liste4.s())
      Liste4.i() = Boucle.i
      
    Case 5
      AddElement(Liste5.s())
      Liste5.i() = Boucle.i
      
    Case 6
      AddElement(Liste6.s())
      Liste6.i() = Boucle.i
      
  EndSelect
  
EndProcedure

For I = 1 To 100
  
  NombreAleatoire1.i = Random(6, 1)
  NombreAleatoire2.i = Random(6, 1)
  NombreAleatoire3.i = Random(6, 1)
  
  EnregistreListe(NombreAleatoire1.i, I)
  EnregistreListe(NombreAleatoire2.i, I)
  EnregistreListe(NombreAleatoire3.i, I)
  
  AddElement(ListeNombres.s())
  ListeNombres.s() = Str(NombreAleatoire1.i) + ", " + Str(NombreAleatoire2.i) + ", " + Str(NombreAleatoire3.i)
  
Next

ForEach Liste1.i()
  Elements.s + Str(Liste1.i()) + ", "
Next

Debug "Nombre 1: " + Elements.s
Elements.s = ""

ForEach Liste2.i()
  Elements.s + Str(Liste2.i()) + ", "
Next

Debug "Nombre 2: " + Elements.s
Elements.s = ""

ForEach Liste3.i()
  Elements.s + Str(Liste3.i()) + ", "
Next

Debug "Nombre 3: " + Elements.s
Elements.s = ""

ForEach Liste4.i()
  Elements.s + Str(Liste4.i()) + ", "
Next

Debug "Nombre 4: " + Elements.s
Elements.s = ""

ForEach Liste5.i()
  Elements.s + Str(Liste5.i()) + ", "
Next

Debug "Nombre 5: " + Elements.s
Elements.s = ""

ForEach Liste6.i()
  Elements.s + Str(Liste6.i()) + ", "
Next

Debug "Nombre 6: " + Elements.s
Elements.s = ""

Debug ""
Debug ""

ForEach ListeNombres.s()
  Tirage.i + 1
  Debug "Tirage n° " + Str(Tirage.i) + " = " + ListeNombres.s()
Next

Le log:

Nombre 1: 2, 3, 4, 4, 6, 7, 9, 9, 13, 20, 21, 21, 22, 24, 26, 29, 33, 34, 35, 37, 38, 40, 41, 42, 44, 44, 45, 46, 46, 47, 50, 51, 55, 55, 58, 64, 64, 65, 70, 75, 76, 76, 80, 81, 81, 85, 85, 88, 93, 97, 99, 100,
Nombre 2: 1, 1, 1, 2, 2, 5, 8, 8, 10, 10, 12, 16, 19, 22, 23, 30, 31, 32, 38, 40, 41, 42, 43, 44, 45, 46, 48, 51, 53, 54, 56, 56, 57, 60, 60, 63, 66, 67, 67, 68, 68, 69, 70, 70, 71, 72, 72, 72, 74, 75, 76, 78, 79, 84, 87, 88, 91, 95, 95, 96, 100,
Nombre 3: 3, 7, 11, 15, 17, 17, 18, 23, 26, 29, 30, 30, 31, 32, 39, 40, 45, 47, 48, 48, 49, 50, 52, 54, 56, 59, 60, 61, 61, 65, 66, 66, 74, 74, 75, 78, 79, 79, 82, 85, 89, 90, 92, 93, 93, 95, 97, 97, 98,
Nombre 4: 4, 8, 11, 11, 13, 14, 15, 16, 17, 19, 24, 25, 27, 28, 28, 31, 33, 33, 34, 35, 36, 39, 42, 43, 43, 47, 49, 50, 51, 52, 54, 57, 59, 61, 62, 63, 67, 69, 73, 73, 81, 83, 84, 87, 89, 90, 96, 98, 99,
Nombre 5: 3, 5, 6, 9, 12, 13, 14, 14, 15, 16, 18, 19, 20, 21, 23, 24, 26, 27, 29, 32, 36, 37, 37, 38, 39, 41, 49, 53, 58, 59, 62, 63, 65, 69, 71, 73, 78, 82, 82, 83, 86, 86, 87, 91, 92, 94, 94, 94, 96,
Nombre 6: 5, 6, 7, 10, 12, 18, 20, 22, 25, 25, 27, 28, 34, 35, 36, 52, 53, 55, 57, 58, 62, 64, 68, 71, 77, 77, 77, 80, 80, 83, 84, 86, 88, 89, 90, 91, 92, 98, 99, 100,


Tirage n° 1 = 2, 2, 2
Tirage n° 2 = 2, 2, 1
Tirage n° 3 = 1, 3, 5
Tirage n° 4 = 4, 1, 1
Tirage n° 5 = 5, 6, 2
Tirage n° 6 = 5, 6, 1
Tirage n° 7 = 1, 3, 6
Tirage n° 8 = 4, 2, 2
Tirage n° 9 = 1, 1, 5
Tirage n° 10 = 2, 2, 6
Tirage n° 11 = 3, 4, 4
Tirage n° 12 = 6, 2, 5
Tirage n° 13 = 5, 1, 4
Tirage n° 14 = 4, 5, 5
Tirage n° 15 = 4, 5, 3
Tirage n° 16 = 4, 5, 2
Tirage n° 17 = 3, 3, 4
Tirage n° 18 = 3, 6, 5
Tirage n° 19 = 2, 5, 4
Tirage n° 20 = 5, 6, 1
Tirage n° 21 = 1, 1, 5
Tirage n° 22 = 2, 6, 1
Tirage n° 23 = 2, 5, 3
Tirage n° 24 = 4, 1, 5
Tirage n° 25 = 6, 4, 6
Tirage n° 26 = 1, 5, 3
Tirage n° 27 = 6, 4, 5
Tirage n° 28 = 4, 4, 6
Tirage n° 29 = 3, 5, 1
Tirage n° 30 = 3, 3, 2
Tirage n° 31 = 4, 2, 3
Tirage n° 32 = 3, 2, 5
Tirage n° 33 = 4, 1, 4
Tirage n° 34 = 1, 6, 4
Tirage n° 35 = 6, 4, 1
Tirage n° 36 = 6, 5, 4
Tirage n° 37 = 1, 5, 5
Tirage n° 38 = 2, 1, 5
Tirage n° 39 = 3, 5, 4
Tirage n° 40 = 2, 3, 1
Tirage n° 41 = 1, 2, 5
Tirage n° 42 = 1, 2, 4
Tirage n° 43 = 2, 4, 4
Tirage n° 44 = 1, 1, 2
Tirage n° 45 = 2, 3, 1
Tirage n° 46 = 2, 1, 1
Tirage n° 47 = 3, 1, 4
Tirage n° 48 = 3, 3, 2
Tirage n° 49 = 3, 4, 5
Tirage n° 50 = 4, 1, 3
Tirage n° 51 = 1, 2, 4
Tirage n° 52 = 6, 4, 3
Tirage n° 53 = 6, 2, 5
Tirage n° 54 = 4, 3, 2
Tirage n° 55 = 1, 6, 1
Tirage n° 56 = 2, 2, 3
Tirage n° 57 = 6, 4, 2
Tirage n° 58 = 6, 1, 5
Tirage n° 59 = 3, 4, 5
Tirage n° 60 = 2, 3, 2
Tirage n° 61 = 3, 3, 4
Tirage n° 62 = 5, 6, 4
Tirage n° 63 = 5, 2, 4
Tirage n° 64 = 6, 1, 1
Tirage n° 65 = 5, 1, 3
Tirage n° 66 = 3, 2, 3
Tirage n° 67 = 2, 2, 4
Tirage n° 68 = 6, 2, 2
Tirage n° 69 = 5, 2, 4
Tirage n° 70 = 2, 2, 1
Tirage n° 71 = 6, 2, 5
Tirage n° 72 = 2, 2, 2
Tirage n° 73 = 4, 4, 5
Tirage n° 74 = 3, 2, 3
Tirage n° 75 = 2, 1, 3
Tirage n° 76 = 1, 1, 2
Tirage n° 77 = 6, 6, 6
Tirage n° 78 = 5, 2, 3
Tirage n° 79 = 2, 3, 3
Tirage n° 80 = 6, 6, 1
Tirage n° 81 = 4, 1, 1
Tirage n° 82 = 5, 3, 5
Tirage n° 83 = 4, 5, 6
Tirage n° 84 = 6, 2, 4
Tirage n° 85 = 1, 1, 3
Tirage n° 86 = 6, 5, 5
Tirage n° 87 = 5, 2, 4
Tirage n° 88 = 6, 1, 2
Tirage n° 89 = 6, 3, 4
Tirage n° 90 = 3, 4, 6
Tirage n° 91 = 5, 2, 6
Tirage n° 92 = 6, 3, 5
Tirage n° 93 = 3, 1, 3
Tirage n° 94 = 5, 5, 5
Tirage n° 95 = 2, 2, 3
Tirage n° 96 = 4, 5, 2
Tirage n° 97 = 3, 3, 1
Tirage n° 98 = 4, 6, 3
Tirage n° 99 = 6, 1, 4
Tirage n° 100 = 2, 1, 6
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Générateur de dés...

Message par case »

les nombres aléatoires n'ont d'aléatoire que le nom, ils sont issus de calculs effectués par l'ordinateur
tu verra que si tu ajoute une ligne avant tes jets de dés

Code : Tout sélectionner

randomseed(0)
(j'ai mis 0 mais n'importe quel autre nombre ferait l'affaire)
la suite de nombre sera toujours la même .
c'est aussi cela qui permet a des jeux comme minecraft de générer des mondes complets a partir d'une graine ou ces mondes seront toujours les mêmes avec cette même graine.

alors c'est pas parfait mais c'est pas si mal et il faut s'en contenter ^^
ImageImage
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Générateur de dés...

Message par boddhi »

Tu peux aussi rendre aléatoire le RandomSeed() par une interaction induite par l'utilisateur.
• Dans une boucle d'évènements, en mettant un RandomSeed() dans la boucle (While, Repeat,...)
• Par une action obligatoire (Input en mode console, MessageRequester en mode fenêtré)

Par exemple, juste avant :

Code : Tout sélectionner

For I = 1 To 100
Ajoute :

Code : Tout sélectionner

; //// Ajout ////
TempsEcoule.u=ElapsedMilliseconds()
MessageRequester("Tirage aléatoire","Appuyez sur Ok")
TempsEcoule=(ElapsedMilliseconds()-TempsEcoule)
RandomSeed(TempsEcoule)
; ///////////////
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Générateur de dés...

Message par Shadow »

Salut, merci mais je ne crois pas que se sois la bonne méthode ?
A chaque fois se sera les même table entre chaque appel de la fonction, je n'aime pas ça.

J'ai un peu amélioré et ajouté des informations, et dégoté encore une anomalie, cette fois, 16 tour sans un seule 1 !

Le code:

Code : Tout sélectionner

Global NewList Liste1.i()
Global NewList Liste2.i()
Global NewList Liste3.i()
Global NewList Liste4.i()
Global NewList Liste5.i()
Global NewList Liste6.i()
Global NewList ListeNombres.s()

Procedure EnregistreListe(Nombre.i, Boucle.i)
  
  Select Nombre.i
      
    Case 1
      AddElement(Liste1.s())
      Liste1.i() = Boucle.i
      
    Case 2
      AddElement(Liste2.s())
      Liste2.i() = Boucle.i
      
    Case 3
      AddElement(Liste3.s())
      Liste3.i() = Boucle.i
      
    Case 4
      AddElement(Liste4.s())
      Liste4.i() = Boucle.i
      
    Case 5
      AddElement(Liste5.s())
      Liste5.i() = Boucle.i
      
    Case 6
      AddElement(Liste6.s())
      Liste6.i() = Boucle.i
      
  EndSelect
  
EndProcedure

For I = 1 To 100
  
  NombreAleatoire1.i = Random(6, 1)
  NombreAleatoire2.i = Random(6, 1)
  NombreAleatoire3.i = Random(6, 1)
  
  EnregistreListe(NombreAleatoire1.i, I)
  EnregistreListe(NombreAleatoire2.i, I)
  EnregistreListe(NombreAleatoire3.i, I)
  
  AddElement(ListeNombres.s())
  ListeNombres.s() = Str(NombreAleatoire1.i) + ", " + Str(NombreAleatoire2.i) + ", " + Str(NombreAleatoire3.i)
  
Next

ElementsPrecedent.i = 0

ForEach Liste1.i()
  
  Elements.s + Str(Liste1.i()) + ", "
  
  If Liste1.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste1.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste1.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste1.i()
  
Next

Debug "Nombre 1: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + ")"
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste2.i()
  
  Elements.s + Str(Liste2.i()) + ", "
  
  If Liste2.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste2.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste2.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste2.i()
  
Next

Debug "Nombre 2: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + ")"
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste3.i()
  
  Elements.s + Str(Liste3.i()) + ", "
  
  If Liste3.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste3.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste3.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste3.i()
  
Next

Debug "Nombre 3: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + ")"
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste4.i()
  
  Elements.s + Str(Liste4.i()) + ", "
  
  If Liste4.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste4.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste4.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste4.i()
  
Next

Debug "Nombre 4: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + ")"
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste5.i()
  
  Elements.s + Str(Liste5.i()) + ", "
  
  If Liste5.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste5.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste5.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste5.i()
  
Next

Debug "Nombre 5: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + ")"
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste6.i()
  
  Elements.s + Str(Liste6.i()) + ", "
  
  If Liste6.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste6.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste6.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste6.i()
  
Next

Debug "Nombre 6: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + ")"
Elements.s = ""

Debug ""
Debug ""

ForEach ListeNombres.s()
  Tirage.i + 1
  Debug "Tirage n° " + Str(Tirage.i) + " = " + ListeNombres.s()
Next


Le log:

Nombre 1: 2, 10, 10, 11, 13, 16, 18, 20, 21, 25, 26, 27, 27, 28, 29, 31, 33, 36, 37, 39, 40, 45, 45, 46, 46, 48, 49, 51, 52, 53, 54, 55, 55, 56, 57, 59, 62, 63, 65, 65, 66, 71, 72, 74, 74, 75, 76, 77, 94, 95, 97, 99, 99, Tour Louper maximum = 16 - (78 à 93)
Nombre 2: 2, 3, 4, 8, 10, 13, 17, 22, 22, 25, 26, 30, 32, 32, 35, 38, 39, 39, 41, 43, 49, 50, 54, 54, 56, 57, 57, 58, 60, 61, 63, 64, 68, 69, 73, 73, 76, 78, 80, 80, 82, 83, 85, 85, 86, 86, 88, 89, 89, 93, 94, 95, 98, Tour Louper maximum = 5 - (44 à 48)
Nombre 3: 3, 3, 5, 5, 6, 7, 7, 8, 12, 16, 18, 23, 24, 25, 28, 31, 32, 38, 41, 42, 42, 43, 43, 47, 48, 52, 53, 59, 60, 60, 64, 65, 66, 67, 69, 72, 74, 77, 78, 79, 93, 95, 96, 96, 97, 98, 100, Tour Louper maximum = 13 - (80 à 92)
Nombre 4: 1, 2, 4, 9, 13, 14, 14, 16, 17, 19, 23, 23, 24, 26, 27, 28, 31, 34, 35, 36, 36, 41, 44, 47, 49, 50, 55, 62, 67, 71, 71, 72, 73, 75, 78, 79, 80, 81, 83, 84, 87, 88, 90, 91, 91, 92, 92, 94, 99, 100, Tour Louper maximum = 6 - (56 à 61)
Nombre 5: 1, 1, 4, 6, 7, 8, 9, 9, 11, 12, 17, 19, 20, 24, 29, 29, 30, 33, 33, 37, 37, 38, 40, 44, 44, 45, 51, 52, 61, 61, 64, 67, 68, 69, 70, 70, 70, 76, 79, 82, 83, 84, 84, 85, 86, 87, 88, 98, 100, Tour Louper maximum = 9 - (89 à 97)
Nombre 6: 5, 6, 11, 12, 14, 15, 15, 15, 18, 19, 20, 21, 21, 22, 30, 34, 34, 35, 40, 42, 46, 47, 48, 50, 51, 53, 56, 58, 58, 59, 62, 63, 66, 68, 75, 77, 81, 81, 82, 87, 89, 90, 90, 91, 92, 93, 96, 97, Tour Louper maximum = 7 - (23 à 29)


Tirage n° 1 = 5, 5, 4
Tirage n° 2 = 1, 2, 4
Tirage n° 3 = 2, 3, 3
Tirage n° 4 = 4, 5, 2
Tirage n° 5 = 3, 3, 6
Tirage n° 6 = 3, 5, 6
Tirage n° 7 = 3, 3, 5
Tirage n° 8 = 2, 5, 3
Tirage n° 9 = 5, 4, 5
Tirage n° 10 = 2, 1, 1
Tirage n° 11 = 5, 1, 6
Tirage n° 12 = 6, 5, 3
Tirage n° 13 = 4, 2, 1
Tirage n° 14 = 6, 4, 4
Tirage n° 15 = 6, 6, 6
Tirage n° 16 = 1, 4, 3
Tirage n° 17 = 2, 5, 4
Tirage n° 18 = 3, 6, 1
Tirage n° 19 = 4, 6, 5
Tirage n° 20 = 6, 5, 1
Tirage n° 21 = 6, 6, 1
Tirage n° 22 = 2, 6, 2
Tirage n° 23 = 4, 3, 4
Tirage n° 24 = 5, 4, 3
Tirage n° 25 = 3, 1, 2
Tirage n° 26 = 4, 1, 2
Tirage n° 27 = 4, 1, 1
Tirage n° 28 = 4, 3, 1
Tirage n° 29 = 1, 5, 5
Tirage n° 30 = 2, 6, 5
Tirage n° 31 = 1, 3, 4
Tirage n° 32 = 2, 3, 2
Tirage n° 33 = 5, 1, 5
Tirage n° 34 = 4, 6, 6
Tirage n° 35 = 4, 6, 2
Tirage n° 36 = 4, 4, 1
Tirage n° 37 = 1, 5, 5
Tirage n° 38 = 3, 2, 5
Tirage n° 39 = 2, 2, 1
Tirage n° 40 = 5, 6, 1
Tirage n° 41 = 4, 2, 3
Tirage n° 42 = 3, 3, 6
Tirage n° 43 = 3, 3, 2
Tirage n° 44 = 5, 4, 5
Tirage n° 45 = 1, 1, 5
Tirage n° 46 = 1, 1, 6
Tirage n° 47 = 3, 4, 6
Tirage n° 48 = 1, 6, 3
Tirage n° 49 = 1, 4, 2
Tirage n° 50 = 6, 4, 2
Tirage n° 51 = 6, 5, 1
Tirage n° 52 = 3, 1, 5
Tirage n° 53 = 3, 1, 6
Tirage n° 54 = 2, 2, 1
Tirage n° 55 = 1, 4, 1
Tirage n° 56 = 6, 2, 1
Tirage n° 57 = 2, 1, 2
Tirage n° 58 = 6, 2, 6
Tirage n° 59 = 6, 1, 3
Tirage n° 60 = 2, 3, 3
Tirage n° 61 = 5, 2, 5
Tirage n° 62 = 1, 6, 4
Tirage n° 63 = 2, 6, 1
Tirage n° 64 = 2, 3, 5
Tirage n° 65 = 1, 1, 3
Tirage n° 66 = 6, 1, 3
Tirage n° 67 = 4, 3, 5
Tirage n° 68 = 2, 5, 6
Tirage n° 69 = 3, 5, 2
Tirage n° 70 = 5, 5, 5
Tirage n° 71 = 4, 4, 1
Tirage n° 72 = 1, 4, 3
Tirage n° 73 = 2, 4, 2
Tirage n° 74 = 1, 3, 1
Tirage n° 75 = 4, 6, 1
Tirage n° 76 = 2, 1, 5
Tirage n° 77 = 6, 3, 1
Tirage n° 78 = 4, 2, 3
Tirage n° 79 = 3, 5, 4
Tirage n° 80 = 2, 2, 4
Tirage n° 81 = 6, 4, 6
Tirage n° 82 = 5, 6, 2
Tirage n° 83 = 5, 4, 2
Tirage n° 84 = 5, 5, 4
Tirage n° 85 = 2, 2, 5
Tirage n° 86 = 5, 2, 2
Tirage n° 87 = 4, 6, 5
Tirage n° 88 = 2, 4, 5
Tirage n° 89 = 2, 2, 6
Tirage n° 90 = 6, 6, 4
Tirage n° 91 = 4, 4, 6
Tirage n° 92 = 4, 6, 4
Tirage n° 93 = 3, 2, 6
Tirage n° 94 = 2, 4, 1
Tirage n° 95 = 3, 1, 2
Tirage n° 96 = 3, 6, 3
Tirage n° 97 = 6, 3, 1
Tirage n° 98 = 3, 2, 5
Tirage n° 99 = 4, 1, 1
Tirage n° 100 = 4, 5, 3
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Générateur de dés...

Message par Shadow »

Salut, j'ai constaté sur un lancer de 10 000 fois 3 dés un maximum de 21 fois ou un numéro n'est pas sortie ce qui est énorme.
J'ai modifié le code pour le rendre encore plus aléatoire, c'est marrant, je sais pas si ça change grand chose mais au moins là c'est super aléatoire :lol:
J'ai aussi fais des test avec de vraie dés (3 dés), j'ai dû faire environ 300 lancer à la louche et est constaté un maximum de 10 fois ou un numéro n'est pas sortie, mais 300 lancer c'est sur que c'est très peu.

Code : Tout sélectionner

NewList ListeNombreAleatoire.s()

For I = 1 To 10000
  AddElement(ListeNombreAleatoire.s())
  
  For N = 1 To 100
    ListeNombreAleatoire.s() + Str(Random(6, 1))
  Next
  
Next

Global NewList Liste1.i()
Global NewList Liste2.i()
Global NewList Liste3.i()
Global NewList Liste4.i()
Global NewList Liste5.i()
Global NewList Liste6.i()
Global NewList ListeNombres.s()

Procedure EnregistreListe(Nombre.i, Boucle.i)
  
  Select Nombre.i
      
    Case 1
      AddElement(Liste1.s())
      Liste1.i() = Boucle.i
      
    Case 2
      AddElement(Liste2.s())
      Liste2.i() = Boucle.i
      
    Case 3
      AddElement(Liste3.s())
      Liste3.i() = Boucle.i
      
    Case 4
      AddElement(Liste4.s())
      Liste4.i() = Boucle.i
      
    Case 5
      AddElement(Liste5.s())
      Liste5.i() = Boucle.i
      
    Case 6
      AddElement(Liste6.s())
      Liste6.i() = Boucle.i
      
  EndSelect
  
EndProcedure

For I = 1 To 1000
  
  SelectElement(ListeNombreAleatoire.s(), Random(9999))
  NombreAleatoire1.i = Val(Mid(ListeNombreAleatoire.s(), Random(100, 1), 1))
  
  SelectElement(ListeNombreAleatoire.s(), Random(9999))
  NombreAleatoire2.i = Val(Mid(ListeNombreAleatoire.s(), Random(100, 1), 1))
  
  SelectElement(ListeNombreAleatoire.s(), Random(9999))
  NombreAleatoire3.i = Val(Mid(ListeNombreAleatoire.s(), Random(100, 1), 1))
  
  EnregistreListe(NombreAleatoire1.i, I)
  EnregistreListe(NombreAleatoire2.i, I)
  EnregistreListe(NombreAleatoire3.i, I)
  
  AddElement(ListeNombres.s())
  ListeNombres.s() = Str(NombreAleatoire1.i) + ", " + Str(NombreAleatoire2.i) + ", " + Str(NombreAleatoire3.i)
  
Next

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste1.i()
  
  Elements.s + Str(Liste1.i()) + ", "
  
  If Liste1.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste1.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste1.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste1.i()
  
Next

Debug "Nombre 1: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + "), Totale de sortie: " + Str(ListSize(Liste1.i()))
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste2.i()
  
  Elements.s + Str(Liste2.i()) + ", "
  
  If Liste2.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste2.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste2.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste2.i()
  
Next

Debug "Nombre 2: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + "), Totale de sortie: " + Str(ListSize(Liste2.i()))
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste3.i()
  
  Elements.s + Str(Liste3.i()) + ", "
  
  If Liste3.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste3.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste3.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste3.i()
  
Next

Debug "Nombre 3: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + "), Totale de sortie: " + Str(ListSize(Liste3.i()))
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste4.i()
  
  Elements.s + Str(Liste4.i()) + ", "
  
  If Liste4.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste4.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste4.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste4.i()
  
Next

Debug "Nombre 4: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + "), Totale de sortie: " + Str(ListSize(Liste4.i()))
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste5.i()
  
  Elements.s + Str(Liste5.i()) + ", "
  
  If Liste5.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste5.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste5.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste5.i()
  
Next

Debug "Nombre 5: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + "), Totale de sortie: " + Str(ListSize(Liste5.i()))
Elements.s = ""

ElementsPrecedent.i = 0
TourMaximumLouper.i = 0

ForEach Liste6.i()
  
  Elements.s + Str(Liste6.i()) + ", "
  
  If Liste6.i() - ElementsPrecedent.i > TourMaximumLouper.i
    TourMaximumLouper.i = Liste6.i() - ElementsPrecedent.i
    SauvegardeTourMaximumLouper.s = Str(ElementsPrecedent.i + 1) + " à " + Str(Liste6.i() - 1)
  EndIf
  
  ElementsPrecedent.i = Liste6.i()
  
Next

Debug "Nombre 6: " + Elements.s + "Tour Louper maximum = " + Str(TourMaximumLouper.i - 1) + " - (" + SauvegardeTourMaximumLouper.s + "), Totale de sortie: " + Str(ListSize(Liste6.i()))
Elements.s = ""

Debug ""
Debug ""

ForEach ListeNombres.s()
  Tirage.i + 1
  Debug "Tirage n° " + Str(Tirage.i) + " = " + ListeNombres.s()
Next
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Générateur de dés...

Message par Shadow »

Salut Azek,

Te connais pas, nouveau ? > Bienvenu ! :D
De rien pour le code.

En faite faudrait réaliser un lisseur qui ferais en sorte que il n'y est pas de telle chose aussi aberrent qui n'existe pas en réalité !
Mais du coup ça n'arrangerais pas tous ces personne qui justement utilise se système tout à fais standard sans tricherie pour justement
te plumer, casino entre autres et tous ces jeu du style !

Dans la réalité, c'est rare je pense de faire par exemple 10, 12 lancer de 3 dés qui ne face jamais un seul numéro, tu ne vois ce genre
de chose que avec les générateur de nombre aléatoire qui eux fonctionne sur une moyenne de sortie !

Tu peu le savoir, si par exemple tu as beaucoup de 1 qui sorte, tu sais qu'au final il va en avoir moins par la suite car la moyenne va agir.
Un lisseur ferais en sorte que les nombre sorte de façon plus ou moins uniformément, pas trop de si, pas trop de sa etc...
Mais du coup ça n'arrangerais pas certaine personne qui les utilise comme indiqué plus haut.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Générateur de dés...

Message par Demivec »

Si vous pensez que ce n'est pas aléatoire ou que vous pensez que c'est prévisible, alors prédisez ce que cela fera et voyez si vous avez raison. Je ne parierais pas trop cependant, sinon vous pourriez perdre la ferme :wink: . Si vous n'êtes pas en mesure de le prédire, il semblerait que ce soit aléatoire.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Générateur de dés...

Message par Shadow »

Demivec, en faisant des statistiques, on peu prédire en extrapolant à partir des moyenne des nombres, exemple hypothétique:

Sortie de (Nombre de lancer de dés = 25):

1: 25%
2: 33%
3: 8%
4: 12%
5: 17%
6: 3%

Alors tu sais que par la suite il sortira (dans l'ordre) avec certitude moins de 2 et de 1 et donc plus de 6 et de 3, possiblement un peu plus de 4 et un petit peu moins de 5.

Car tous ça va tendre à s'équilibrer pour arriver vers les 16.66% par nombres (A force de tirage nombreux), car 100% / 6 = 16,666666666666666666666666666667

Donc non, je ne peu pas prédire le prochain nombre certes, mais je peu prédire se qui à le plus de chance de tombé, donc si, quelque par !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Générateur de dés...

Message par Ar-S »

@shadow Pas si tu changes le seed avant chaque lancé, et c'est ce qu'il faut faire.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Générateur de dés...

Message par Shadow »

Ar-S a écrit : mar. 23/janv./2024 12:27 @shadow Pas si tu changes le seed avant chaque lancé, et c'est ce qu'il faut faire.
Ah ? :|
Intéressant ça, jférais des test tien pour voir, merci.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Naheulf
Messages : 193
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Générateur de dés...

Message par Naheulf »

J'ai envie de dire que ça n'as rien de surprenant.

La probabilité de ne pas obtenir un chiffre en particulier sur un lancé est de 5/6
La probabilité que ça arrive 45 fois d'affilé sur une série de 45 lancés est de (5/6)^45 ~= 0.02734% donc pas énorme
MAIS ça aurait pu arriver pour n'importe quel chiffre donc x6 -> 0.16406%
La probabilité de ne PAS obtenir une telle série est donc de 1-p = 99,8359%

À chaque fois que tu lances ton programme tu fait 100 lancés de 3 dés (soit 300 lancés de dés) en supposant tu tu ait lancé ton programme 10 fois ça fait un total de 3000 lancés de dés. Sur cette looongue série de lancées, la "petite" série de 45 lancés peut être positionné à 3000+1-45 = 2956 emplacements différents. La probabilité de ne PAS obtenir cette série est donc de 99,8359%^2956 = 0.78%

Au final la probabilité d'obtenir une telle série sur un tel nombre de lancés est donc de ... 99,22%. Est-ce donc si surprenant de l'avoir eu ?
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Générateur de dés...

Message par MLD »

@ Shadow
Bonjour
Si tu arrive a faire des prédictions de sortie de chiffres fiable ! Le loto est bientôt dans ta poche :D :roll :oops: :mrgreen:
Sérieusement je me suis amuser a faire des stats sur la sortie des numéros de loto même avec des systèmes réducteur. C'est pratiquement impossible de prédire des sorties de chiffres.
Idem pour le tiercé ou le quinté. Dans ma vie professionnel j'ai eu ,il y a bien longtemps l'occasion de discuter avec les polytechniciens de la société Carrus qui on mis au point l'informatique des courses de chevaux, les calcul sont fait pour que la probalité de gagner soit la plus faible possible.
Mais dans les cas les plus favorables et en y mettant beaucoup d'argent le prélèvement du PMU et de l'état fait que tu soit rendement zéro.
Pour ceux qui gagne c'est du pur hasard imprévisible.
Pour le reste effectivement il faut changer le seed a chaque tour.
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: Générateur de dés...

Message par Guillot »

t'as 5/6 chance de pas faire de 6 à un tirage
donc pow(5/6,15)=6% de pas faire de 6 dans 15 tirage successif
6%, c'est pas si improbable !
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Générateur de dés...

Message par Shadow »

MLD, salut,

̶L̶e̶ ̶l̶o̶t̶o̶ ̶c̶'̶e̶s̶t̶ ̶t̶r̶u̶q̶u̶é̶,̶ ̶o̶n̶ ̶m̶'̶a̶ ̶d̶i̶t̶ ̶u̶n̶e̶ ̶f̶o̶i̶s̶ ̶(̶U̶n̶ ̶t̶a̶x̶i̶)̶,̶ ̶m̶a̶i̶s̶ ̶j̶e̶ ̶n̶e̶ ̶p̶e̶u̶ ̶e̶n̶ ̶ê̶t̶r̶e̶ ̶c̶e̶r̶t̶a̶i̶n̶,̶ ̶l̶e̶ ̶m̶e̶c̶ ̶d̶i̶s̶a̶i̶t̶ ̶q̶u̶e̶,̶ ̶e̶n̶ ̶f̶a̶i̶t̶,̶
̶l̶'̶o̶r̶d̶i̶n̶a̶t̶e̶u̶r̶ ̶v̶a̶ ̶s̶o̶r̶t̶i̶r̶ ̶d̶e̶s̶ ̶n̶o̶m̶b̶r̶e̶s̶ ̶q̶u̶i̶ ̶r̶e̶s̶s̶o̶r̶t̶e̶n̶t̶ ̶l̶e̶ ̶m̶o̶i̶n̶s̶ ̶p̶o̶s̶s̶i̶b̶l̶e̶ ̶d̶e̶ ̶t̶o̶u̶s̶ ̶l̶e̶s̶ ̶t̶i̶r̶a̶g̶e̶s̶ ̶(̶f̶e̶u̶i̶l̶l̶e̶ ̶d̶e̶ ̶n̶u̶m̶é̶r̶o̶ ̶d̶e̶s̶ ̶j̶o̶u̶e̶u̶r̶s̶)̶.̶
̶
̶É̶v̶i̶d̶e̶m̶m̶e̶n̶t̶,̶ ̶y̶a̶ ̶u̶n̶e̶ ̶m̶a̶r̶g̶e̶ ̶p̶o̶u̶r̶ ̶q̶u̶e̶ ̶l̶e̶s̶ ̶g̶e̶n̶s̶ ̶g̶a̶g̶n̶e̶n̶t̶ ̶q̶u̶a̶n̶d̶ ̶m̶ê̶m̶e̶ ̶u̶n̶ ̶p̶e̶u̶,̶ ̶s̶i̶n̶o̶n̶ ̶ç̶a̶ ̶s̶e̶ ̶v̶e̶r̶r̶a̶i̶t̶ ̶t̶r̶o̶p̶.̶

@Guillot, salut,

Oui mais je ne sais pas si cette méthode de calcule est fiable pour ça !

---edit Ar-S--- On reste dans le code
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Générateur de dés...

Message par SPH »

L'histoire n'est pas tout à fait celle que tu racontes. :idea:
-
En fait, les gens qui réfléchissent ont plus de chance de gagner gros. Pourquoi ?
Parce qu'elles savent que les joueurs ont des numéros fétiches comme une date de naissance, un numéro porte bonheur ou de malheur et d'autres numéros particuliers.
Le loto a une cagnotte qui sera PARTAGé à tous les joueurs qui trouveront tous les numéros.
Alors, pour ne pas faire parti de ces joueurs touchant moins, ces gens "intelligentes" jouent les numéros les moins utilisés.
Ainsi, s'ils gagnent, elles savent qu'elles seront beaucoup moins à se partager le pactole...

Pas si bête, hein ? :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre