Probabilité de retenue.
Réponses
-
Tu peux écrire un petit script en Python (ou autre) qui le fait.
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Mais je sais, je me demande si on peux trouver sans faire de programme, la technique par force brute...On peut aussi poser la question avec une addition de n nombres à m chiffres (on enlève le "au plus").
-
Pour la question initiale, avec un programme, sans ternir compte de la commutativité je trouve:[0.19448878 0.37781024 0.32018505 0.10751592] pour chacune des probabilités. Quelqu'un peut confirmer ?avec ce programme, qui je suis sûr contient une erreur (des retenue comptés trop de fois)import numpy as np
n=999
L=[]
for i in range(n):
for j in range(n):
a=0
if i%10+j%10>10:
a=a+1
if i%100+j%100>100:
a=a+1
if i+j>1000:
a=a+1
L.append(a)
#print(i,j,a)
RET=np.array([0,0,0,0])
for i in range(len(L)):
if L[i]==0:
RET[0]=RET[0]+1
if L[i]==1:
RET[1]=RET[1]+1
if L[i]==2:
RET[2]=RET[2]+1
if L[i]==3:
RET[3]=RET[3]+1
print(RET/len(L))
-
Bonjour,Je suppose que les deux entiers sont tirés uniformémément entre 0 et 999.Pas de retenue, facile à la main :Probabilité que la somme de deux entiers naturels $<10$ soit $<10$ : $55/100 = 11/20$.Probabilité d'aucune retenue : $$\left( \frac{11}{20}\right)^3=\frac{1331}{8000}=0,166375$$
-
Pour exactement une retenue :$$\frac{45}{100}\times \frac{45}{100}\times \frac{55}{100} +\frac{55}{100}\times \frac{45}{100}\times \frac{45}{100}+ \frac{55}{100}\times \frac{55}{100}\times \frac{45}{100}$$
-
On est donc réellement obligé de faire par disjonction de cas... et au final c'est assez pénible, y compris à programmer (ce que je vais reprendre aussi).
-
Pour exactement deux retenues :$$\frac{55}{100}\times \frac{45}{100}\times \frac{55}{100} +\frac{45}{100}\times \frac{45}{100}\times \frac{45}{100}+ \frac{45}{100}\times \frac{55}{100}\times \frac{45}{100}$$
-
Regardons le code Pythonn=999Ici, tu exécutes une boucle pour tous les entiers i entre 0 et 998 , tu ne traites pas le nombre 999.
for i in range(n) :if i%10+j%10 > 10Tu prends le chiffre des unités de $i$ et celui de $j$, tu les ajoutes, et tu regardes si ça dépasse $10$ (tu considères que 3+7, il n'y a pas de retenue )
Corrigeons, en simplifiant la fin.n=1000Resu=[0,0,0,0]for i in range(n):for j in range(n):a=0if i%10+j%10>9:a=a+1if i%100+j%100>99:a=a+1if i+j>999:a=a+1Resu[a]=Resu[a]+1print ( Resu )for i in range(4) :print ( i, Resu[i] , Resu[i]/1000/1000 )0 166375 0.1663751 358875 0.3588752 338625 0.3386253 136125 0.136125
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Pour exactement 3 retenues :$$\frac{45}{100}\times \frac{55}{100}\times \frac{55}{100}$$Pas si pénible que ça.
-
En effet pas si pénible mais il faut avoir l'esprit clair, je vais voir en base b et en ajoutant cette fois ci n nombres à m chiffres. désormais je pourrais dire aux élèves en ajoutant 2 nombres compris entre 0 et 1000, il n'y aura pas de retenue que dans 16% des cas, donc il faut faire attention.
-
Quand on ajoute deux nombres, la retenue ne peut être que de 1.Avec plus de nombres, ça va être la panique pour faire à la main.
-
En fait je réalise que le problème est mal posé pour plus de deux nombres puisque la retenue peut avoir deux chiffres, et ça change complètement la question. (il faudra voir ça autrement si je peux).
-
Une ch'tite procédure python pour compter le nombre de retenues dans la somme d'une liste de nombres :
def nb_retenues(L) : nb_digits = max(len(str(n)) for n in L) return sum( sum(n%10**(k+1) for n in L) >= 10**(k+1) for k in range(nb_digits))
-
Je ne suis pas d'accord, si on ajoute 1 et 999 il y a 3 retenues, c'est je genre de situations que je trouve difficile à programmer.
-
Essaie nb_retenues([999,1]) avant de dire que tu n'es pas d'accord !
-
Oupss je n'avait pas testé avec la bonne liste, désolé.
-
Il me semble que la question initiale peut être abordée de manière statistique. Évidemment en sachant déterminer le nombre de retenues dans une addition de deux nombres à 3 chiffres en base 10.
-
Et pourquoi donc l'aborder de manière statistique, alors qu'un peu de réflexion donne la réponse exacte, comme je l'ai donnée plus haut ?
-
En fait j'ai testé avec une liste de chiffres et ça ne donnait qu'une retenue, cependant la somme de la liste c'est 1338049, dans ce cas le programme ne que une retenue mais 133804... et quelques, et ce que ça ne fait pas plutôt 6 retenues, car si la retenue est plus grande que 10 il ne faut pas répartir , (de toute façon je suis loin d'y être,mais je me pose la question).
-
ChatGPT semble y arriver https://chatgpt.com/share/c10f3243-9ac2-4959-9776-20286a389e6d
-
@GaBuZoMeu La probabilité que tu annonces pour aucune retenue est différente de celle calculée par le dénombrement fait par Python programmé par ChatGPT, j’ignore quelle est la bonne réponse.
-
@GaBuZoMeu Mea Culpa je n’avais pas vu « au plus 3 chiffres » edit : https://chatgpt.com/share/1db7674b-c5e8-44e1-a243-b570b3a86073
-
j'ai posé la question a chat GPT pour 4 chiffres et là, surprise: il fait le calcul par combinaison aléatoire.
-
-
C'était la liste du programme que j'avais tappé qui donnait le nb de retenue pour chaque addition, (le programme était faux, il y avait 99980001 nombres dans la liste puisque j'avais oublié que en python le dernier ne compte pas), mais que des additions à avec des nombres à 1 chiffre, après je ne connais pas le bon cadre pour ce problème, mais je sais que tu as eu la bonne réponse. (quelqu'un ma soufflé la réponse pour le problème initial, et c'est très intéressant).
-
@plsryef Effectivement avec 4 chiffres, l’exécution en ligne du programme Python écrit par ChatGPT est estimée trop longue et il passe en mode échantillonnage https://chatgpt.com/share/a66078f2-88f5-4547-aed5-f431a7481578
-
Il faut s'entendre sur ce qu'on appelle retenue, quand la retenue a plus d'un chiffre.
-
je me demande si ce genre d'ajustement, c'est sous le contrôle d'une main humaine, ou si chatGPt a fait ça directement...(je n'en sais rien).
-
Pfff ! Pour l'addition de deux nombres entre 0 et 9999, le plus difficile est le cas de 2 retenues. Un peu de réflexion montre que la probabilité est :$$\frac{9^4+2\times9^3\times11+2\times9^2\times11^2+9\times11^3}{20^4}$$
-
Avec une procédure python pour ne pas se fatiguer, on peut vérifier que ChatGPT ne se trompe pas de beaucoup :Probas des retenues dans l'addition de deux entiers tirés uniformément et indépendamment entre 0 et 10^4-1
0 retenues : 14641/20^4, soit environ 9.15%
1 retenues : 41382/20^4, soit environ 25.86%
2 retenues : 54180/20^4, soit environ 33.86%
3 retenues : 37818/20^4, soit environ 23.64%4 retenues : 11979/20^4, soit environ 7.49%et on peut même pousser à 20 chiffres :Probas des retenues dans l'addition de deux entiers tirés uniformément et indépendamment entre 0 et 10^20-1
0 retenues : 672749994932560009201/20^20, soit environ 0.00%
1 retenues : 9107144559500275165878/20^20, soit environ 0.01%
2 retenues : 61415122343214370372092/20^20, soit environ 0.06%
3 retenues : 273515994103313771130618/20^20, soit environ 0.26%
4 retenues : 900169196401234083330567/20^20, soit environ 0.86%
5 retenues : 2323013351558849247546072/20^20, soit environ 2.22%
6 retenues : 4870730455315951210500384/20^20, soit environ 4.65%
7 retenues : 8487695944156221581978376/20^20, soit environ 8.09%
8 retenues : 12474632241635698600373754/20^20, soit environ 11.90%
9 retenues : 15607292621056557857976276/20^20, soit environ 14.88%
10 retenues : 16707364743535315152671160/20^20, soit environ 15.93%
11 retenues : 15327325712900504357179884/20^20, soit environ 14.62%
12 retenues : 12029937358944052005249726/20^20, soit environ 11.47%
13 retenues : 8035939189064173249238904/20^20, soit environ 7.66%
14 retenues : 4526053542924411907670976/20^20, soit environ 4.32%
15 retenues : 2117733837422458893738408/20^20, soit environ 2.02%
16 retenues : 804623842353843993437253/20^20, soit environ 0.77%
17 retenues : 239542938911144431515942/20^20, soit environ 0.23%
18 retenues : 52650319980190385468268/20^20, soit environ 0.05%
19 retenues : 7633261024396334529642/20^20, soit environ 0.01%
20 retenues : 550431814035730916619/20^20, soit environ 0.00%CPU times: user 9.82 s, sys: 3.6 ms, total: 9.83 s Wall time: 9.83 s Si quelqu'un insiste, je peux donner mon code. -
Moi j'insiste.
-
Alors voila :
import itertools as it def probas_retenues(n) : probs = (n+1)*[0] A = it.product('01',repeat=n) for a in A : r=0; p=1; s=0 for k in range(n) : if int(a[k])==0 : if r==0 : p *= 11 if r==1 : p *= 9 r = 0 if int(a[k])==1 : if r==0 : p *= 9 if r==1 : p *= 11 r=1 ; s+= 1 probs[s] += p return probs def affiche_probas(n) : print("Probas des retenues dans l'addition de deux entiers tirés uniformément\n\ et indépendamment entre 0 et 10^{}-1".format(n) ) L = probas_retenues(n) for k in range(n+1) : print ("{} retenues : {}/20^{}, soit environ {:.2%}"\ .format(k,L[k],n,L[k]/20**n))
-
merci.
-
Un lien (asymptotique) avec une loi binomiale ?
-
Intéressante question.Soit $X_k$ la variable aléatoire de Bernoulli qui vaut 1 si la $k$-ème colonne de l'addition donne une retenue, 0 sinon.$$p_k = P(X_k=1) = \frac12\left(1-\frac1{10^k}\right)$$Problème, les $X_k$ ne sont pas indépendantes :$$ P(X_{k+1}=1\mid X_k=1) = \frac{11}{20}\qquad P(X_{k+1}=1\mid X_k=0) = \frac{9}{20}$$A-t-on une variante du Théorème Central Limite pour la moyenne des $X_k$ dans ce cas ?PS. Il semble que oui, en considérant la chaîne de Markov avec deux états "retenue" et "pas retenue". En tout cas, la fréquence des retenues tend presque sûrement vers 1/2.
-
j'ai testé avec une base plus petite (3) ça donne ça:0 retenues : 1099511627776/6^20, soit environ 0.03%
1 retenues : 5772436045824/6^20, soit environ 0.16%
2 retenues : 18485539241984/6^20, soit environ 0.51%
3 retenues : 44942537785344/6^20, soit environ 1.23%
4 retenues : 90142773608448/6^20, soit environ 2.47%
5 retenues : 155569084170240/6^20, soit environ 4.25%
6 retenues : 236725444018176/6^20, soit environ 6.47%
7 retenues : 322474466082816/6^20, soit environ 8.82%
8 retenues : 397070246608896/6^20, soit environ 10.86%
9 retenues : 444566834511872/6^20, soit environ 12.16%
10 retenues : 454014387879936/6^20, soit environ 12.42%
11 retenues : 423265520582656/6^20, soit environ 11.58%
12 retenues : 359706673545216/6^20, soit environ 9.84%
13 retenues : 277598768726016/6^20, soit environ 7.59%
14 retenues : 193240510758912/6^20, soit environ 5.29%
15 retenues : 120048630890496/6^20, soit environ 3.28%
16 retenues : 65461744041984/6^20, soit environ 1.79%
17 retenues : 30511447670784/6^20, soit environ 0.83%
18 retenues : 11613591568384/6^20, soit environ 0.32%
19 retenues : 3298534883328/6^20, soit environ 0.09%
20 retenues : 549755813888/6^20, soit environ 0.02%@GaBuZoMeu ton code fait presque apparaître une loi binomiale(j'avais regardé itertools à un moment mais ça ne fonctionne bien pour le temps que sur de petites valeurs, va falloir revoir ça, dans le programme A est un itérable, revoir les itérables en python il va falloir le faire)
-
Au départ je pensais que ça serait vraiment plus rapide en temps d'exécution, et en faisant tout à a la main (sur des permutations pour résoudre le jeu de morpion, avant je l'avais fait en scratch et ça prenait une demi-journée) j'avais constaté que mon programme était juste 2 fois plus long, j'étais un peu déçu. mais c'est quand même utile pour ne pas avoir à faire tout ça à la main. En réalité c'est quand même bien d'investir dedans.
-
Bonjour,En se cassant tout de même un peu la tête, il est possible d'expliciter la loi de probabilité du nombre $X_n$ de retenues effectuées lorsque l'on additionne deux entiers pris aléatoirement et indépendamment dans $[\![0;10^n-1]\!].$$p: =\dfrac{11}{20},\:\:q:= 1-p.\quad\displaystyle \binom ab =0 \:\text{ si }\:a,b\in\N,\:\:a<b.\quad \mathbb P(X_n=0)=p^n.$$$\boxed{\forall k \in [\![1;n]\!], \quad \mathbb P(X_n=k)= \displaystyle \sum_{i=0}^{k-1}\binom{k-1}i \binom{n-k}i p^{n-2i-1}q^{2i+1}+\binom{k-1}i \binom{n-k}{i +1}p^{n-2i-2}q^{2i+2}.}$$$\bullet\:\:$ On retrouve bien, par exemple, le fait que $\displaystyle \sum_{k=0}^n \mathbb P(X=k)=1,\:$ en observant que:$\forall i\leqslant \dfrac{n-1}2,\:\:\displaystyle \sum_{k=i+1}^n\binom{k-1}i\binom{n-k}i =\sum_{k=i+1}^n\#\Big\{(x_1,x_2,\dots x_{2i+1}) \in [\![1;n]\!]^{2i+1}\mid x_j<x_{j+1},\: x_{i+1}=k\Big\} =\binom n{2i+1},$$\forall i\leqslant \dfrac{n-2}2,\:\:\displaystyle \sum_{k=i+1}^n\binom{k-1}i\binom{n-k}{i +1} =\sum_{k=i+1}^n\#\Big\{(x_1,x_2,\dots x_{2i+2}) \in [\![1;n]\!]^{2i+2}\mid x_j<x_{j+1},\: x_{i+1}=k\Big\} =\binom n{2i+2},$de sorte que $\displaystyle \sum_{k=0}^n \mathbb P(X=k)=p^n+\sum_{j=1}^n\binom nj p^{n-j}q^j =(p+q)^n =1.$$\bullet\:\:$ Une autre remarque: si $p=\dfrac 12,\:$ alors $X_n$ obéit à la loi binomiale $\mathcal B(n,\frac 12).\:$(ce n'est pas tout-à-fait immédiat.)
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 59 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres