J'ai 7 case ou je peut mètre des jetons a une valeur max de
100 jeton sur 1 ,
50 sur 2 ,
25 sur 3 ,
12 sur 4 ,
10 sur 5 ,
5 sur 6 et
5 sur 7 ,
je peut mettre sur plusieurs case en même temps et je ne suis pas obliger de pauser sur des cases
je voudrais cree un programe en python qui recherche
tout les possibilité paussoblilté et stock dans un tableau sous forma [1 : nombre de jetton , 2 : nombre de jetton etc.] et faire ça pour tout les possibilité qui existe
mais je n arrive pas a trouver comment faire je ne trouve rien je pence que je charche mal si quelqu un a des idee pour comment faire je vous remercie
pour le moment je suis partit sur cela
import random
#je declaire tout les valeur nessesaire
# Initialise le nombre de jetons à 25
jetons = 25
# Initialise des mise max
cases = [[1, 100], [2, 50], [3, 25], [4, 12], [5, 10], [6, 5], [7, 5]]
# initialise le dictionnaire pour stocker les résultats
resultats = {}
# tout les combinaisont paussible
Ton énoncé n'est pas clair. Tu as 25 jetons au maximum, et tu veux pouvoir en placer 100 dans la première case? Est-ce que tous tes jetons sont identiques? Ta liste "cases" peut se simplifier: cases = [100, 50, 25, 12, 10, 5, 5] L'indice remplacera le numéro de la case. Que veux-tu mettre exactement dans le dictionnaire. Veux-tu faire un tirage au hasard (le pourquoi du module random) ou calculer le nombre de possibilités?
La phrase suivante est très ambigüe:
> je peut mettre sur plusieurs case en même temps et je ne suis pas obliger de pauser sur des cases
Pas sur des cases, ça veut dire quoi? Tu ignores et tu fais un nouvel essai?
- Edité par PierrotLeFou 12 janvier 2023 à 18:11:34
Le Tout est souvent plus grand que la somme de ses parties.
Pourquoi dis-tu que tu as 25 jetons et que tu peux en mettre 100 dans la première case? Si je fais abstraction de cette contrainte, le nombre de possibilités sera égal au produit de tes capacités: >>> 100*50*25*12*10*5*5 375000000 Tu es certain de vouloir tout afficher?
edit: c'est pire que ça, il faut considérer le cas où il y a 0 jetons dans une case ...
- Edité par PierrotLeFou 15 janvier 2023 à 19:10:33
Le Tout est souvent plus grand que la somme de ses parties.
Pourquoi dis-tu que tu as 25 jetons et que tu peux en mettre 100 dans la première case?
car je peux en mètre 100 mais j'en ai 25 au départ mais la suite du projet que je veux faire je pourrais gagner des jetons c'est pour ça mais pour le moment je par du principe que j'en ai que 25
edit: c'est pire que ça, il faut considérer le cas où il y a 0 jetons dans une case ...
ouai je sais mais c'est un petit projet perso etc c'est normal que se soit delirent et pas très intéressant et ni productif haha ha
Le code suivant donne toutes les façons de placer de 0 à 25 jetons dans les cases en respectant les limites des cases. Il utilise le principe du "compteur kilométrique". Cela donne 1977381 combinaisons. Si on ajoute ou enlève des jetons, ça sera sans doute moins évident. Même chose si tous les jetons doivent être placés.
edit: en fait ce code ne donne pas toutes les combinaisons, on n'a pas par exemple le cas où on a un seul jeton dans chaque case.
Je devrai trouver un autre principe qui s'approchera de la récursivité.
Il faudra que je sache vraiment si je peux avoir moins de 25 jetons placés dans le jeu ou s'ils doivent être tous placés.
Le nombre de combinaisons sera beaucoup plus grand si je n'ai pas besoin de tous les placer. car je devrai refaire le calcul pour 0, 1, 2, 3, ... 25 jetons.
-
cases = [100, 50, 25, 12, 10, 5, 5] jetons = 25 lg = len(cases) placer = [0] * lg resultats =[] i = 0 while i < lg: resultats.append(placer[:]) i = 0 while i < lg and (placer[i] >= cases[i] or jetons == 0): jetons += placer[i] placer[i] = 0 i += 1 if i >= lg: break if jetons > 0: placer[i] += 1 jetons -= 1 print(len(resultats))
- Edité par PierrotLeFou 16 janvier 2023 à 2:06:21
Le Tout est souvent plus grand que la somme de ses parties.
Il faudra que je sache vraiment si je peux avoir moins de 25 jetons placés dans le jeu ou s'ils doivent être tous placés.
deja merci pour tout et non les 25 jetons ne sont pas obligatoirement placer merci encor
Grâce à toi je vais avoir tous les résultats possibles etc. Mais le truc c'est que c'est le premier partit de ce projet
La suite va être un peu plus compliquer dans le sens où je vais devoir faire un bout de code qui me permettra de faire en sorte que tous les possibilités devront être faite donc exemple : [1:[1:0,2:0,3:0,4:0,5:0,6:0,7:1]2:[1:0,2:0,3:0,4:0,5:0,6:1,7:0]
Puis chaque case est équivalente à un numéro on a déjà ça : case 1, case 2 …
Mais le truc c'est que les case ne sont pas tous égaux dans le tirage ce que je veux dire c'est que la case 1 à 46% de chance d'être bon la case 2 à un autre nombre etc. et chaque case ont un nombre différent de tomber dessus ce qui nous ramène a 100% si on cumule tout ce qui est normal
Donc oui c'est une sorte de roue de la loterie en gros
Puis ce que je devrais faire c'est que le code devrait tester comme dit au-dessus toutes les combinaisons de départ et il s’arrêtera qu'avec 2 facteurs :
Le premier est quand il Attin 0 jeton il stop
la deuxième est si après 100 partis il ne sait pas arrêter et qu'il continue à gagner alors il vas me mètre le résultat dans un tableau et il affichera quel est le meilleur moyen de gainer avec un schéma qui ce répète (en gardent toujours le même paterne exemple : [1:[1:0,2:0,3:0,4:0,5:0,6:0,7:1] )
Je pense que tu ne saisis pas clairement toi-même le problème. Tu as 7 cases, d'accord. Elles ont des "capacités" différentes? C'est à dire que je peux mettre un certain nombre de jetons dans chaque case. Tant qu'une case n'est pas pleine, la probabilité de placer un jeton dans une case est 1/7 (14.2857%) Je ne vois pas d'où tu sort ton 46%, ça serait plutôt 48.3% ... Mon code précédent, comme je l'ai précisé plus tard, ne donne pas toutes les possibilités. J'ai fait un autre code, récursif celui-là, qui devrait donner toutes les possibilités. Je veux mieux le tester avant de le donner. Si tu pouvais mieux décrire l'algorithme, ça serait une bonne idée. + les conditions initiales: * nombre de jetons * ce qu'il y a dans les cases au début + je fais un tirage: * mon tirage me donne quoi? La case où je pourrais placer le jeton? * si je ne peux pas, je fais quoi? + quand je n'ai plus de jetons, j'arrête. * comment je peux gagner un jeton? + etc. ...
Le Tout est souvent plus grand que la somme de ses parties.
J’ai une roue avec 7 valeur dessus (c’est pour ça 7 case ) la roue possède plusieurs fois le même numéro qui est équivalent à 1 fois la case 7. 1 fois la case 6 .2 fois la case 5. 4 fois la case 4 …
Je peux poser sur tous les case comme bon me semble mais il y a un montent max par case qui équivaux à :
100 jeton sur 1 ,
50 sur 2 ,
25 sur 3 ,
12 sur 4 ,
10 sur 5 ,
5 sur 6 et
5 sur 7 ,
Est les cases on des nombres inscrit qui sont :
1 sur 1 ,
3 sur 2 ,
5 sur 3 ,
10 sur 4 ,
20 sur 5 ,
50 blanc sur 6 et
50 noir sur 7 ,
Maintenant que c’est expliquer je vais expliquer les règles du jeu
Parton du principe que j’ai mis 3 jetons sur la 7 em case (soit sur 50 noir) et 5 jetons sur la 3 em case (soit 5) et que la roue tombe sur la 3 em case ( sur 5 ) alors je perd tout les jeton qui ne sont pas sur la 3 em case (donc – les jetons qui sont sur la 7 em case (50 noir) (-3) ) et je récupère ma mise + ma mise * le numéro de la case soit 5
Et je pars avec 25 jetons et si je suis a 0 je perd
Le programme va devoir faire en sorte de trouver parmi tous les combinaisons possibles quel est le meilleur moyen de gagner (si je ne change jamais de stratégie)
si jen ais pas bien expliquer je peut encors reprendre
> J’ai une roue avec 7 valeur dessus (c’est pour ça 7 case ) > la roue possède plusieurs fois le même numéro qui est équivalent Donc, je peux avoir plus d'une case 1, ou 2, ... > à 1 fois la case 7. 1 fois la case 6 . 2 fois la case 5. 4 fois la case 4 … Et les autres cases? Pour le tirage, je ferais avec choices (avec un S): tirage = random.choices([1, 2, 3, 4, 5, 6, 7], [..., 4, 2, 1, 1]) Pour un seul résultat de tirage. Je ne sais pas vraiment comment aborder le problème. Ça ressemble plus à de l'intelligence artificielle qu'à des combinaisons. Je te reviens si j'ai une nouvelle idée ...
edit:
Donc, les cases ont deux attributs: + le nombre de jetons maximum qu'on peut y placer. + le facteur de multiplication de la mise si on gagne. Peut-être que cases pourrait être un dictionnaire: cases = {1: (100, 1), 2: (50, 3), 3: (25, 5), 4: (12, 10), 5: (10, 20), 6: (5, 50), 7: (5, 50)}
re-edit: Je te donne le code correct (cette fois-ci) qui me donne toutes les combinaisons possibles pour un nombre donné de jetons. Je n'ai pas modifié cases pour en faire un dictionnaire: (Ça fait beaucoup de possibilités)
cases = [100, 50, 25, 12, 10, 5, 5] lg = len(cases) jetons = 25 placer = [0] * lg resultats = [] def combinaisons(n, i): if i >= lg or n == 0: if n == 0: resultats.append(placer[:]) return for k in range(n+1): m = min(n-k, cases[i]) placer[i] = m combinaisons(n - m, i+1) combinaisons(jetons, 0) print(len(resultats))
538285
re-re-edit: Je te donne un code naïf pour le jeu. À l'endroit ou je crée la liste placer, c'est là que se fera la stratégie.
from random import choices cases = {1: (100, 1), 2: (50, 3), 3: (25, 5), 4: (12, 10), 5: (10, 20), 6: (5, 50), 7: (5, 50)} lg = len(cases) jetons = 25 while jetons > 0: # Je place arbitrairement 3 jetons dans chaque case ... placer = [3] * lg gagnant = choices([1, 2, 3, 4, 5, 6, 7], [32, 16, 8, 4, 2, 1, 1])[0] - 1 # Pour les indices gagnant = 6 # Je triche, ça boucle infiniment jetons += cases[gagnant+1][1] * placer[gagnant] - sum(m for j, m in enumerate(placer) if j != gagnant) print("Tu as perdu")
Quand j'aurai un peu de temps, je vais tester par force brute s'il y a des combinaisons où on gagne (ou obtient) plus quel que soit le résultat du tirage.
Ça peut donner plus de 10 millions de tests. Pas si affreux que ça.
- Edité par PierrotLeFou 18 janvier 2023 à 7:23:21
Le Tout est souvent plus grand que la somme de ses parties.
Déjà un gtand merci a toi d' avoir mis de ton temps
>Donc, je peux avoir plus d'une case 1, ou 2, ...
Oui exactement comme cela
>Et les autres cases?
1 fois la case 7. 1 fois la case 6 . 2 fois la case 5. 4 fois la case 4. 8 fois la case 3 . 12 fois la case 2 et 24 fois la case 1
Je vais tester ton programme et voir comment tout ce passe et comme tu a dit si tu a le temps pour continuer je te répond déjà merci encore et aussi c' est un projet perso donc ce n ai pas pressent donc ne vois pas sa comme un objectif a rentre tôt et encore merci
le dernier bout de code jai las pas trop compris avec la boocle infini et apres tu a pas un moyen de faire en sorte que le code trouver tout les combinaison paussible et apres il les exploite ?
Selon le code suivant, il n'existe aucune stratégie qui permet de gagner à tout coup. C'est tout à fait normal, car les casino s'arrangent pour que les gens perdent à long terme. La stratégie de mettre 3 jetons sur chaque case ne marchait pas car la probabilité de tomber souvent sur une case avantageuse est trop faible à la longue. C'est pour cela que j'ai dit que je trichais en donnant toujours un résultat gagnant. C'est ça qui me mettait dans une boucle infinie. Ce qui est contraire à la réalité. Note: si tu essaies le code, attends-toi à ce que ça soit assez long. Ça prend plus de 20 secondes sur mon ordi qui est assez rapide. - from random import choices def combinaisons(n, i): if i >= lg or n == 0: if n == 0: resultats.append(placer[:]) return for k in range(n+1): m = min(n-k, cases[i]) placer[i] = m combinaisons(n - m, i+1) # cases = [100, 50, 25, 12, 10, 5, 5] lg = len(cases) gains = [1, 3, 5, 10, 20, 50, 50] strategies = [] for jetons in range(1, 25+1): placer = [0] * lg resultats = [] combinaisons(jetons, 0) for placer in resultats: compte = 0 for gagnant in range(lg): if gains[gagnant] * placer[gagnant] >= sum(mises for essai, mises in enumerate(placer) if essai != gagnant): compte += 1 if compte == lg: strategies.append(placer[:]) print(len(strategies)) if len(strategies) > 0: print(strategies)
Le Tout est souvent plus grand que la somme de ses parties.
ok ok merci pour tout et sur du cour terme comme max 100 a 200 partie tu pence qu il y a une strategie ?
j ai demender a tacht GPT ( ouai j ai eu la flem de le faire mdr ) ( je suis sur trop de project en meme temps haha )
et j ai eu sela :
import random
# Valeurs sur la roue et leur probabilité de sortie
wheel_values = {
50: 1,
20: 2,
10: 4,
5: 8,
3: 12,
1: 24
}
# Nombre de jetons initial pour le joueur
initial_tokens = 25
# Nombre de parties à jouer pour chaque combinaison de mises
num_plays = 200
# Fonction pour simuler une partie avec une combinaison de mises donnée
def play_game(bets):
tokens = initial_tokens
for i in range(num_plays):
# Choisir une valeur aléatoire sur la roue en fonction de leur probabilité
result = random.choices(list(wheel_values.keys()),
weights=list(wheel_values.values()))[0]
if result in bets:
tokens += result * bets[result]
else:
tokens -= sum(bets.values())
if tokens <= 0:
return tokens
return tokens
# Tester toutes les combinaisons de mises possibles
best_bets = {}
best_tokens = 0
for i in range(1, initial_tokens+1):
for j in range(0, i+1):
for k in range(0, j+1):
for l in range(0, k+1):
for m in range(0, l+1):
for n in range(0, m+1):
for o in range(0, n+1):
if i+3*j+5*k+10*l+20*m+50*n <= initial_tokens:
bets = {1: i, 3: j, 5: k, 10: l, 20: m, 50: n}
tokens = play_game(bets)
if tokens > best_tokens:
best_tokens = tokens
best_bets = bets
# calculer le pourcentage de gain et de perte
gain_percentage = (best_tokens / initial_tokens) * 100
loss_percentage = 100 - gain_percentage
# Afficher les résultats
print("Meilleures mises: ", best_bets)
print("Nombre de jetons gagnés: ", best_tokens)
print("Pourcentage de gain: {:.2f} %".format(gain_percentage))
print("Pourcentage de perte: {:.2f} %".format(loss_percentage))
ce qui me dit que le meuilleur est quand meme de miser sur 1 et quelque fois sur 5
Si je change mon test pour garder les solutions où je gagne au moins 6 fois sur 7, j'obtiens 8015 possibilités. Bien sûr, je ne les ai pas affichées.
Le Tout est souvent plus grand que la somme de ses parties.
récupéré tout les possibilité
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.