Besoin d'un technicien VBA pour tester méthodes casino
Fermé
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
-
Modifié le 6 sept. 2017 à 16:16
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 13 sept. 2017 à 14:10
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 13 sept. 2017 à 14:10
A voir également:
- Besoin d'un technicien VBA pour tester méthodes casino
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Tester rj45 sans testeur ✓ - Forum câblage
- Tester composant pc - Guide
- Cresus casino compte bloqué ✓ - Forum Consommation & Internet
13 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
8 sept. 2017 à 20:32
8 sept. 2017 à 20:32
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...
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...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié le 6 sept. 2017 à 19:23
Modifié le 6 sept. 2017 à 19:23
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.
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
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
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
6 sept. 2017 à 16:51
6 sept. 2017 à 16:51
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?
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?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 sept. 2017 à 16:56
6 sept. 2017 à 16:56
On verra tout ça demain si tu veux bien.
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
6 sept. 2017 à 17:00
6 sept. 2017 à 17:00
Bien sur pas de problèmes
Bonne soirée :)
Bonne soirée :)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 sept. 2017 à 19:20
6 sept. 2017 à 19:20
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
6 sept. 2017 à 20:20
6 sept. 2017 à 20:20
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...
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...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié le 6 sept. 2017 à 20:44
Modifié le 6 sept. 2017 à 20:44
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"...
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"...
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
6 sept. 2017 à 20:45
6 sept. 2017 à 20:45
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 sept. 2017 à 20:49
6 sept. 2017 à 20:49
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
--
Je vais faire appel à un spécialiste et t'indiquer le lien du forum en question.
bonne soirée
--
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié le 7 sept. 2017 à 09:06
Modifié le 7 sept. 2017 à 09:06
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 :
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 :
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...
Pfiou! quel pavé!!!
Cordialement,
Franck
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
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
7 sept. 2017 à 16:09
7 sept. 2017 à 16:09
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 ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
7 sept. 2017 à 16:23
7 sept. 2017 à 16:23
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.
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.
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié le 7 sept. 2017 à 16:50
Modifié le 7 sept. 2017 à 16:50
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.
É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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
7 sept. 2017 à 18:47
7 sept. 2017 à 18:47
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 sept. 2017 à 20:20
7 sept. 2017 à 20:20
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++
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++
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
7 sept. 2017 à 10:20
7 sept. 2017 à 10:20
hello!
oui en effet, quel boulot!!!
j'ai testé la macro mais rien ne s'affiche après "choisir un nombre"...
oui en effet, quel boulot!!!
j'ai testé la macro mais rien ne s'affiche après "choisir un nombre"...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 sept. 2017 à 10:34
7 sept. 2017 à 10:34
Change Private Const NB_TIRAGES As Long = 100000
par 10000 par exemple...
par 10000 par exemple...
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
7 sept. 2017 à 11:51
7 sept. 2017 à 11:51
super!!!
merci beaucoup pour ta patience et ton travail!
merci beaucoup pour ta patience et ton travail!
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié le 7 sept. 2017 à 13:52
Modifié le 7 sept. 2017 à 13:52
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 :-)
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 :-)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
7 sept. 2017 à 14:47
7 sept. 2017 à 14:47
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...
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...
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
7 sept. 2017 à 14:13
7 sept. 2017 à 14:13
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?
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?
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
7 sept. 2017 à 14:20
7 sept. 2017 à 14:20
Ou par exemple sur une autre suite aléatoire générée par un autre algorithme?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié le 10 sept. 2017 à 09:32
Modifié le 10 sept. 2017 à 09:32
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
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
majival
Messages postés
23
Date d'inscription
mercredi 6 septembre 2017
Statut
Membre
Dernière intervention
5 décembre 2017
13 sept. 2017 à 13:30
13 sept. 2017 à 13:30
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
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
13 sept. 2017 à 14:10
13 sept. 2017 à 14:10
Bonjour,
sans moi puisque ce que je dis ne t'intéresse absolument pas.
eric
sans moi puisque ce que je dis ne t'intéresse absolument pas.
eric