Besoin d'un technicien VBA pour tester méthodes casino

majival Messages postés 24 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Mes compétences en VBA étant plus que limitées, j'ai besoin d'un programmeur en VB pour faire quelques tests de méthodes.

Si quelqu'un est intéressé ce serait top

Je veux connaitre le nombre de fois qu'un numéro sort dans les prochains x prochains coups si celui ci est déjà sorti 2 fois dans les 13 derniers

ex:

1-10-23-12-5-10-...
le 10 est sorti 2 fois
Va t-il sortir de nouveau avant le 71 ème coup
En gros, combien de fois une "doublette" devient une "triplette"
et combien de fois cela n’apparaît pas

a+

13 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bon, avec les réponses imbriquées, on ne comprends plus rien à ce thread...

    Alors @ majival, je ne comprends rien de rien aux résultats que tu obtiens....
    Je ne sais pas ce que tu as fait, mais tu as du "merder" quelque part.
    De plus, je soupçonne fortement Microsoft d'avoir développer leur fonction de feuille Alea de la même manière que Rnd+Randomize, avec rigoureusement le même algo. Sinon, c'est que vraiment ils ont du temps à perdre. Tu ne penses pas?

    @Dal : théoriquement, une roulette "pourrait" tirer 10 000 fois, d'affilée, le numéro 0.
    On est là dans l'aléatoire.
    Comme elle pourrait aussi tirer 200 000 000 de tirages sans que le zéro y figure...
    Seulement, si on parle ici de roulette "électronique", "informatique", basée sur un algorithme, alors là, la triche est réalisable.... Dans l'imaginaire!
    Exactement le sujet que tu évoques dans le lien fournit plus haut avec Fiddy...
    Mais bon, là, on s'attaque à du costaud. Il est toujours possible d'étudier les "réponses" numériques d'une roulette "électronique", mais de là à "prédire" un résultat...

    1
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    J'ai modifié ton message car pas d'aide en MP.

    Ce code que j'ai réalisé, devrait t'aider.
    Tu peux régler les constantes comme tu veux...
    La constante FLAG sert à chercher les "fourchettes" dans lesquelles on trouve des doublons.
    Si on trouve, par exemple, dans les 13 premiers tirages, ceci :
    1, 16, 12, 0, 11, 19, 0, 7, 8, 9, 10, 14, 35
    on trouve un doublon de zéro dans les fourchettes :
    1 à 13
    2 à 14
    3 à 15
    4 à 16
    Donc, si tu ne veux qu'une seule fourchette sur ces 4, règle FLAG à True. Pour les 4 fourchettes règle FLAG à False.
    Attention, si FLAG est False ne va pas au delà de 100 000 tirages.
    Par contre, si True, tu peux allègrement dépasser le million...

    Pour les autres constantes, j'ai repris tes données, donc ça devrait le faire.

    Option Explicit
    
    Private Type Fourchette
        mini As Long
        Maxi As Long
    End Type
    
    '------ CONSTANTES A ADAPTER
    Private Const MINIMUM As Long = 0           'premier nombre
    Private Const MAXIMUM As Long = 36          'dernier nombre
    Private Const NB_1 As Long = 13             'premier "écart" = intervalle ou trouver les doublons
    Private Const NB_2 As Long = 71             'second "écart" = intervalle complément de NB_1 pour trouver triplon
    Private Const COMPTEUR_1 As Long = 2        'premier compteur si doublon 2, si triplon 3 etc
    Private Const COMPTEUR_2 As Long = 4        'second compteur si triplon 3, quadri 4 etc
    Private Const NB_TIRAGES As Long = 10000    'Nombre de tirages aléatoires
    Private Const FLAG As Boolean = True        'Limite les "fourchettes" ==> pour toutes mettre false
    Private Const RANGE_RESTIT As String = "A1" 'l'adresse de la première cellule pour la restitution
    '------------------------
    
    Public Sub Liste_Aleas()
    Dim i As Long, TbNbAleas() As Long, Resultats() As Variant
    Dim T As Single
    
        T = Timer
        ReDim TbNbAleas(1 To NB_TIRAGES, 1 To 1)
        For i = 1 To NB_TIRAGES
            TbNbAleas(i, 1) = NbAlea(MINIMUM, MAXIMUM)
        Next
        Resultats = Recherche_Triplons_Particuliers(TbNbAleas)
        'restitution
        Range(RANGE_RESTIT) = "Numéro"
        Range(RANGE_RESTIT).Offset(0, 1) = "Fourchettes"
        Range(RANGE_RESTIT).Offset(0, 2) = "Triplons"
        Range(RANGE_RESTIT).Offset(1, 0).Resize(UBound(Resultats, 1), UBound(Resultats, 2)) = Resultats
        MsgBox "Fin en : " & Timer - T & " Secondes"
    End Sub
    
    Private Function NbAlea(min As Long, Max As Long) As Long
        Randomize Timer
        NbAlea = Int((Max - min + 1) * Rnd + min)
    End Function
    
    Private Function Recherche_Triplons_Particuliers(TbNbAlea() As Long) As Variant()
    Dim TbFourchette() As Fourchette, NumeroAchercher As Long, temp() As Variant
    Dim i As Long
    
        ReDim temp(1 To 37, 1 To 3)
        For NumeroAchercher = MINIMUM To MAXIMUM
            temp(NumeroAchercher + 1, 1) = NumeroAchercher
            TbFourchette = Est_Sorti_Deux_Fois(TbNbAlea, NumeroAchercher, NB_1, FLAG)
            On Error Resume Next
            temp(NumeroAchercher + 1, 2) = UBound(TbFourchette)
            If Err <> 0 Then
                temp(NumeroAchercher + 1, 2) = 0
                temp(NumeroAchercher + 1, 3) = 0
            Else
                temp(NumeroAchercher + 1, 3) = Nb_Triplons(TbNbAlea, NumeroAchercher, TbFourchette, NB_2)
            End If
            On Error GoTo -1
        Next
        Recherche_Triplons_Particuliers = temp
    End Function
    
    Private Function Est_Sorti_Deux_Fois(Tb() As Long, Nb As Long, Ecart As Long, Unique As Boolean) As Fourchette()
    Dim i As Long, j As Long, cptDouble As Long, CptFourch As Long, F() As Fourchette, Stp As Long
        
        Stp = IIf(Unique, Ecart, 1)
        For i = LBound(Tb, 1) To UBound(Tb, 1) Step Stp
            For j = i To i + Ecart - 1
                If j > UBound(Tb, 1) Then Exit For
                If Tb(j, 1) = Nb Then cptDouble = cptDouble + 1
                If cptDouble = COMPTEUR_1 Then
                    ReDim Preserve F(CptFourch)
                    F(CptFourch).mini = i
                    F(CptFourch).Maxi = i + Ecart - 1
                    CptFourch = CptFourch + 1
                    Exit For
                End If
            Next j
            cptDouble = 0
        Next i
        Est_Sorti_Deux_Fois = F
    End Function
    
    Private Function Nb_Triplons(Tb() As Long, Nb As Long, TbFourc() As Fourchette, Ecart As Long) As Long
    Dim i As Long, j As Long, cpt_Triple As Long, res As Long
    
        cpt_Triple = 0
        For i = LBound(TbFourc) To UBound(TbFourc)
            For j = TbFourc(i).Maxi To TbFourc(i).Maxi + Ecart - 1
                If j > UBound(Tb, 1) Then Exit For
                If Tb(j, 1) = Nb Then cpt_Triple = cpt_Triple + 1
                If cpt_Triple = COMPTEUR_2 - COMPTEUR_1 Then res = res + 1: Exit For
            Next j
        Next i
        Nb_Triplons = res
    End Function


    EDIT : il y a une erreur que je viendrais rectifier demain.
    EDIT 2 : Erreur corrigée.
    EDIT 3 : ajout des constantes de choix "doublons" "triplons" "quadri" etc...
    Cordialement,
    Franck
    0
  3. majival Messages postés 24 Statut Membre
     
    ok je comprends super!

    si je comprends bien le tableau

    pour le numéro 1 par exemple j'ai fourchette 29 et triplon 34
    ça veut dire que le numéro 1 qui est sorti 29 fois dans un intervalle de 13 mais seulement 34 fois celà s'est accompagné d'une troisième sorti dans un intervalle de 71 ?

    C'est bien çà?

    sur le code à quel niveau je peux modifier de doublon à triplon, de triplon à quatri(je sais pas comment on dit) etc etc?
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      On verra tout ça demain si tu veux bien.
      0
  4. majival Messages postés 24 Statut Membre
     
    Bien sur pas de problèmes

    Bonne soirée :)
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      C'est bon, j'ai eu le temps...

      pour le numéro 1 par exemple j'ai fourchette 29 et triplon 34
      ça veut dire que le numéro 1 qui est sorti 29 fois dans un intervalle de 13 mais seulement 34 fois celà s'est accompagné d'une troisième sorti dans un intervalle de 71 ?

      Oui, c'est cela... Enfin je crois...

      J'ai ajouté deux constantes COMPTEUR_1 et COMPTEUR_2 qui correspondent au choix de doublons, triplons etc...
      COMPTEUR_1 = 1er choix
      COMPTEUR_2... Second choix.

      Pour ne pas être redondant, j'ai corrigé le code plus haut...

      Dis moi si ça te convient...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. majival Messages postés 24 Statut Membre
     
    hello

    Bah là le résultat de la macro n'est pas bon je pense
    il me donne 36 numéros avec doublon et triplon pour chaque numéro
    mais je pense qu'il y a une erreur.
    Les chiffres que j'ai sont:
    Numéro Fourchettes Triplons
    0 47 14
    1 17 1
    2 29 2
    3 2 1
    4 38 4
    5 0 0
    6 56 9
    7 41 7
    8 20 7
    9 62 8
    10 26 2
    11 74 2
    12 68 1
    13 53 2
    14 0 0
    15 89 13
    16 59 13
    17 62 4
    18 47 5
    19 53 14
    20 23 4
    21 29 6
    22 74 3
    23 41 2
    24 38 1
    25 65 8
    26 17 3
    27 39 9
    28 8 3
    29 69 4
    30 2 1
    31 50 2
    32 21 3
    33 11 1
    34 62 11
    35 8 3
    36 5 2

    Ce résultat n'est pas possible car la quantité de doublons qui se transforment en triplon est trop faible.
    Idem d'après les résultats le 5 et le 14 n'ont pas eu de doublon. Sur 10 000 tirages, c'est pas possible non plus.
    La première macro me paraissait mieux dans le sens ou il y avait la liste de tous les numéros générés aléatoirement et pour chaque numéro le nombre de doublon dans un intervalle donné et la quantité de doublons qui vont se transformer en triplon dans un nouvelle intervalle donné.

    çà c'était top.

    Après ce que je voulais, c'est si on peut rajouter des constantes. Pour modifier les intervalles de références (la fourchette de base) et l'intervalle qui suit

    ex: on avait fourchette 13 pour doublon et ensuite écart de 71 pour triplon
    l'idée était de modifier cette fourchette de 13 et l'intervalle qui suit la sortie du numéro pour la deuxième fois de 71. Par ex on met 10 et 20 etc

    Puis modifier doublon vers triplon par triplon vers quat ou quatr vers cinq...
    0
  7. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    là, je penses que tu te fourvoies.

    Les résultats sont ceux attendus.
    mais, par acquis de conscience, je vais demander à un ami spécialiste de contrôler.

    Mais, à mon avis, c'est l'idée de base, l'algorithme, qui n'est pas correct.

    a demain,
    bonne soirée

    EDIT :
    Il te faut bien comprendre et garder en tête ce qu'est REELLEMENT le hasard, l'aléatoire.
    Par le plus grand des hasards, tu pourrais obtenir 1000 tirages rigoureusement identiques composés uniquement de 32...
    Ou alors complètement autre chose...
    Donc, ta phrase : d'après les résultats le 5 et le 14 n'ont pas eu de doublon. Sur 10 000 tirages, c'est pas possible non plus. ne correspond en rien à la réalité du hasard.
    Moi j'affirme EXACTEMENT le contraire.

    Je penses que tu veux ABSOLUMENT conforter ton algo, et que, de par le fait, tu zappes complètement ce qu'est réellement l'aléatoire, le hasard.
    Le hasard, tu ne pourras jamais le contrôler quelle que soit ton envie de gagner au casino, dusses tu y intégrer la théorie de la "loi de grands nombres"...

    0
  8. majival Messages postés 24 Statut Membre
     
    peut-être en effet.
    Si les résultats sont bien confirmés, c'est que l'idée de base est pas bonne et dans ce cas je serai fixé

    bonne soirée à toi aussi

    a demain
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Je te confirme ça demain ou d'ici quelques jours.
      Je vais faire appel à un spécialiste et t'indiquer le lien du forum en question.
      bonne soirée

      --
      0
  9. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    J'ai décelé 2 erreurs (minimes) dans mon code.
    J'ai donc corrigé...

    Donc : MEA CULPA

    Pour la peine, j'ai ajouté une ou deux fonctions à ce code.
    Tu disposes donc maintenant de deux procédures principales :
    • Tirage_Et_Resultats
    • Verifions


    Verifions te demande de choisir un nombre, refait un nouveau tirage, et affiche les calculs (positions dans la liste, fourchettes, etc...) relatifs au nombre choisi...

    Ensuite, tu demandais :
    Après ce que je voulais, c'est si on peut rajouter des constantes. Pour modifier les intervalles de références (la fourchette de base) et l'intervalle qui suit

    ex: on avait fourchette 13 pour doublon et ensuite écart de 71 pour triplon
    l'idée était de modifier cette fourchette de 13 et l'intervalle qui suit la sortie du numéro pour la deuxième fois de 71. Par ex on met 10 et 20 etc

    C'est le cas depuis le début.
    cf constantes :
    NB_1 As Long = 13
    NB_2 As Long = 71

    Pour le choix doublon, triplon etc, voir les constantes :
    COMPTEUR_1 As Long = 2
    COMPTEUR_2 As Long = 3

    Regarde bien ces constantes, tu pourras tout régler depuis elles...

    Option Explicit
    
    Private V As Boolean
    
    Private Type Fourchette
        mini As Long
        Maxi As Long
    End Type
    
    '------ CONSTANTES A ADAPTER
    Private Const MINIMUM As Long = 0           'premier nombre
    Private Const MAXIMUM As Long = 36          'dernier nombre
    Private Const NB_1 As Long = 13             'premier "écart" = intervalle ou trouver les doublons
    Private Const NB_2 As Long = 71             'second "écart" = intervalle complément de NB_1 pour trouver triplon
    Private Const COMPTEUR_1 As Long = 2        'premier compteur si doublon 2, si triplon 3 etc
    Private Const COMPTEUR_2 As Long = 3        'second compteur si triplon 3, quadri 4 etc
    Private Const NB_TIRAGES As Long = 100000   'Nombre de tirages aléatoires
    Private Const FLAG As Boolean = True        'Limite les "fourchettes" ==> pour toutes mettre false
    Private Const RANGE_RESTIT As String = "A1" 'l'adresse de la première cellule pour la restitution
    '------------------------
    
    Public Sub Tirage_Et_Resultats()
    Dim TbNbAleas() As Long, Resultats() As Long
    Dim T As Single
    
        T = Timer
        TbNbAleas = Liste_Aleas
        Resultats = Recherche_Triplons_Particuliers(TbNbAleas)
        'restitution
        Range(RANGE_RESTIT) = "Numéro"
        Range(RANGE_RESTIT).Offset(0, 1) = "Fourchettes"
        Range(RANGE_RESTIT).Offset(0, 2) = "Triplons"
        Range(RANGE_RESTIT).Offset(1, 0).Resize(UBound(Resultats, 1), UBound(Resultats, 2)) = Resultats
        MsgBox "Fin en : " & Timer - T & " Secondes"
    End Sub
    
    Public Sub Verifions()
    Dim i As Long, TbNbAleas() As Long, F() As Fourchette, Nb As Long, cpt As Long
    
        ReDim TbNbAleas(1 To NB_TIRAGES, 1 To 1)
        cpt = 2: V = True
        Nb = MyInputBox
        For i = 1 To NB_TIRAGES
            TbNbAleas(i, 1) = NbAlea(MINIMUM, MAXIMUM)
            Cells(i + 1, 1) = TbNbAleas(i, 1)
            If Cells(i + 1, 1) = Nb Then Cells(cpt, 2) = i: cpt = cpt + 1
        Next
        F = Est_Sorti_Deux_Fois(TbNbAleas, Nb, NB_1, True)
        For i = LBound(F) To UBound(F)
            Cells(i + 2, 3) = F(i).mini & " <=> " & F(i).Maxi
        Next
        Cells(2, 5) = Nb_Triplons(TbNbAleas, Nb, F, NB_2)
        Range("A1") = "Liste"
        Range("B1") = "Positions du " & Nb
        Range("C1") = "Adresses fourchettes"
        Range("D1") = "Positions triplons"
        Range("E1") = "Nb Triplons"
        V = False
    End Sub
    
    Private Function Liste_Aleas() As Long()
    Dim temp() As Long, i As Long
    
        ReDim temp(1 To NB_TIRAGES, 1 To 1)
        For i = 1 To NB_TIRAGES
            temp(i, 1) = NbAlea(MINIMUM, MAXIMUM)
        Next
        Liste_Aleas = temp
    End Function
    
    Private Function NbAlea(min As Long, Max As Long) As Long
        Randomize Timer
        NbAlea = Int((Max - min + 1) * Rnd + min)
    End Function
    
    Private Function Recherche_Triplons_Particuliers(TbNbAlea() As Long) As Long()
    Dim TbFourchette() As Fourchette, NumeroAchercher As Long, temp() As Long
    Dim i As Long
    
        ReDim temp(1 To 37, 1 To 3)
        For NumeroAchercher = MINIMUM To MAXIMUM
            temp(NumeroAchercher + 1, 1) = NumeroAchercher
            TbFourchette = Est_Sorti_Deux_Fois(TbNbAlea, NumeroAchercher, NB_1, FLAG)
            On Error Resume Next
            temp(NumeroAchercher + 1, 2) = UBound(TbFourchette) + 1
            If Err <> 0 Then
                temp(NumeroAchercher + 1, 2) = 0
                temp(NumeroAchercher + 1, 3) = 0
            Else
                temp(NumeroAchercher + 1, 3) = Nb_Triplons(TbNbAlea, NumeroAchercher, TbFourchette, NB_2)
            End If
            Erase TbFourchette
            On Error GoTo -1
        Next
        Recherche_Triplons_Particuliers = temp
    End Function
    
    Private Function Est_Sorti_Deux_Fois(Tb() As Long, Nb As Long, Ecart As Long, Unique As Boolean) As Fourchette()
    Dim i As Long, j As Long, cptDouble As Long, CptFourch As Long, F() As Fourchette, Stp As Long
        
        Stp = IIf(Unique, Ecart, 1)
        For i = LBound(Tb, 1) To UBound(Tb, 1) Step Stp
            For j = i To i + Ecart - 1
                If j > UBound(Tb, 1) Then Exit For
                If Tb(j, 1) = Nb Then cptDouble = cptDouble + 1
                If cptDouble = COMPTEUR_1 Then
                    ReDim Preserve F(CptFourch)
                    F(CptFourch).mini = i
                    F(CptFourch).Maxi = i + Ecart - 1
                    CptFourch = CptFourch + 1
                    Exit For
                End If
            Next j
            cptDouble = 0
        Next i
        Est_Sorti_Deux_Fois = F
    End Function
    
    Private Function Nb_Triplons(Tb() As Long, Nb As Long, TbFourc() As Fourchette, Ecart As Long) As Long
    Dim i As Long, j As Long, cpt_Triple As Long, res As Long, cpt As Long
    
        cpt = 2
        For i = LBound(TbFourc) To UBound(TbFourc)
            cpt_Triple = 0
            For j = TbFourc(i).Maxi + 1 To TbFourc(i).Maxi + Ecart - 1
                If j > UBound(Tb, 1) Then Exit For
                If Tb(j, 1) = Nb Then cpt_Triple = cpt_Triple + 1
                If cpt_Triple = COMPTEUR_2 - COMPTEUR_1 Then
                    If V Then
                        Cells(cpt, 4) = j: cpt = cpt + 1: res = res + 1: Exit For
                    Else
                        res = res + 1: Exit For
                    End If
                End If
            Next j
        Next i
        Nb_Triplons = res
    End Function
    
    Private Function MyInputBox() As Long
    Dim bon As Boolean, entree As String, MyArray As Variant, i As Long, Dimens As Byte, Valeur As String
    
       Do While Not bon
            entree = InputBox("Entrer un nombre entre 0 et 36", "Saisie")
            If StrPtr(entree) <> 0 Then
                If IsNumeric(entree) Then
                    If entree >= 0 And entree <= 36 Then bon = True
                End If
            End If
        Loop
        MyInputBox = CLng(entree)
    End Function


    Pfiou! quel pavé!!!
    Cordialement,
    Franck
    0
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      je ne suis pas expert en VBA avec lequel ne n'ai développé que très rarement, mais dans ton code, "Randomize" ne devrait-il pas être appelé une seule fois, au lieu d'être dans la boucle ?
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Randomize a besoin d'une valeur en paramètre pour être "plus" aléatoire.
      Ici, en lui passant le Timer (valeur toujours changeante), on "augmente" sensiblement l'aléatoire de cette fonction.
      Au détriment d'un cadencement, je te le concède.

      L'enlever de la boucle ne se ressentirai pas sur les résultats, visuellement.
      0
    3. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Ah, tu dois le savoir mieux que moi :-)

      Évidemment, tout dépend de la précision du timer ... je suppose qu'il n'est pas à la seconde près, comme en C, on va avoir des répétitions de séquences liées au fait que la boucle s'exécute dans la même seconde et que Randomize est réinitialisé avec la même valeur... ?

      En termes de doc, je trouve cela, si c'est bien la bonne doc : https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/8zedbtdt(v=vs.90)?redirectedfrom=MSDN pour Randomize (qui initialiserait avec le "timer du système" selon cette doc si la graine est omise ...), mais je ne trouve pas de la doc sur "Timer" et sa précision.
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui, c'est la bonne doc pour Randomize.

      Pour le Timer, la précision, sous windows, est du centième de seconde.

      Timer renvoie le nombre de secondes écoulées depuis minuit.
      Exemple, à 18h43 : 67482,77 secondes...
      https://docs.microsoft.com/en-us/office/vba/Language/Reference/User-Interface-Help/timer-function
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonsoir,
      Demain, je posterai une discussion dans le forum "programmation", afin que chacun puisse s'exprimer sur la notion de hasard et comment elle peut être traitée informatiquement.
      J'espère que du "beau monde" y participera.
      Invitez vos potes!!
      Je mettrais le lien ici dès que j'aurais écrit le sujet.
      Sur ce, bonne soirée!!!
      A++
      0
  10. majival Messages postés 24 Statut Membre
     
    hello!

    oui en effet, quel boulot!!!

    j'ai testé la macro mais rien ne s'affiche après "choisir un nombre"...
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Change Private Const NB_TIRAGES As Long = 100000
      par 10000 par exemple...
      0
  11. majival Messages postés 24 Statut Membre
     
    super!!!
    merci beaucoup pour ta patience et ton travail!
    0
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Salut majival,

      Le script de pijaku est super, mais il te donne seulement une idée des récurrences possibles sur le générateur de nombres aléatoires utilisé par VBA.

      Tu dois certainement avoir à l'esprit que ce n'est probablement pas celui d'un jeu de roulette électronique, que et le "pseudo-hasard" généré n'est en tout cas pas similaire au "hasard" lié à l'usage d'une roulette réelle :-)
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour,

        Outre les récurrences dues à l'utilisation de Randomize, il y a également un facteur à prendre en compte, le cadencement.
        Ce facteur n'est pas gérable lorsque l'on travaille en boucle via l'informatique.

        Il est fort possible d'intégrer une liste, une suite extraite d'un jeu réel.

        Il est également possible de réaliser un autre algorithme.

        Je vais tenter de faire quelque chose...
        0
    2. majival Messages postés 24 Statut Membre
       
      Salut DAL,

      oui tu as raison. Je me suis interrogé à ce propos.
      Est-il possible de modifier le script de pijaku afin de l'adapter par exemple à une suite extraite d'un jeu réel?
      0
  12. majival Messages postés 24 Statut Membre
     
    Ou par exemple sur une autre suite aléatoire générée par un autre algorithme?
    0
  13. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Pourquoi simuler (de façon imparfaite puisque c'est un générateur pseudo aléatoire) pour avoir la probabilité ?
    D'autant plus qu'on aura qu'une tendance et qu'il faudrait des millions de tirages pour commencer à avoir un certain nombre de décimales justes.

    Pour moi probabilité d'avoir un nombre =1/37
    un doublon =1/37/37
    un triplé =1/37/37/37
    Celle d'obtenir un triplet après un doublon est celle d'obtenir le nombre : =1/37
    Ce qui ne veut pas dire une certitude d'avoir ce nombre comme souligné précédemment.
    Avec un dé la probabilité de faire 1000 tirages sans un 6 existe, même si elle est très faible.
    eric

    En essayant continuellement, on finit par réussir. 
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    0
  14. majival Messages postés 24 Statut Membre
     
    salut à tous,

    j'ai fait un petit fichier excel
    https://www.cjoint.com/c/GInlyz4gndX

    Le principe est le suivant:
    Je sélectionne un numéro de la façon suivante:
    sur les 37 derniers tours, je calcule le nombre de numéros rouge, de noirs, d'impair de pair, de even et pass de première douzaine, seconde et troisieme et colonne 1, 2 et 3
    et je joue uniquement le numéro qui figure parmi tous ces critères.
    C'est à dire que si il y plus de rouge que de noir, ce doit-être un numéro noir, impair dans colonne 1(par exemple) etc
    Si aucun numéro ne correspond alors on attend.
    Ce numéro doit être joué pendant 54 coups max.
    L'idée est de savoir le nombre de fois ou le numéro arrive dans les 54 coups et le nombre de fois ou il n'arrive pas.

    merci à tous
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      sans moi puisque ce que je dis ne t'intéresse absolument pas.
      eric
      0