[PYTHON] Vous serez ingénieur dans 100 jours ――Jour 65 ――Programmation ――A propos de la probabilité 3

Cliquez ici jusqu'à hier

Vous deviendrez ingénieur dans 100 jours - Jour 63 - Programmation - À propos de la probabilité 1

Vous deviendrez ingénieur dans 100 jours - Jour 59 - Programmation - À propos des algorithmes

Vous deviendrez ingénieur dans 100 jours --- Jour 53 --Git --À propos de Git

Vous deviendrez ingénieur dans 100 jours - Jour 42 --Cloud --À propos des services cloud

Vous deviendrez ingénieur dans 100 jours - Jour 36 --Base de données --À propos de la base de données

Vous deviendrez ingénieur dans 100 jours-24 jours-Python-Bases du langage Python 1

Vous deviendrez ingénieur dans 100 jours --Jour 18 --Javascript --Les bases de JavaScript 1

Vous deviendrez ingénieur dans 100 jours - Jour 14 --CSS --CSS Basics 1

Vous deviendrez ingénieur dans 100 jours - Jour 6 --HTML - Bases du HTML 1

Probabilité d'être familier

Pensons au problème de probabilité qui est relativement familier à la programmation.

Quelle est la probabilité d'avoir des élèves avec le même anniversaire dans une classe de 30 personnes?

Je pense que le nombre de classes du primaire et du premier cycle du secondaire est à ce sujet La probabilité qu'il y ait même un groupe de personnes avec le même anniversaire dans une classe de 30 personnes Combien de temps cela prendra-t-il?

Probabilité que même une paire ait le même anniversaire = 1 - Probabilité que l'anniversaire de chacun soit différent

S'il s'agit d'une formule de calcul

1- \frac{365 \times 364 \times 363 \times ... (365-29) }{365^{30}}

Sera.

C'est ennuyeux, alors résolvons-le avec Python.

from functools import reduce
from operator import mul

n = 30
a1 = [i for i in range(365,365-n,-1)]
a2 = [365 for i in range(n)]
print('{:%}'.format(1- reduce(mul, a1)/reduce(mul, a2)))

70.631624%

C'est environ 70%. Si 30 personnes se réunissent, il y a 70% de chances qu'une paire célèbre le même anniversaire.

** Quelle est la probabilité d'avoir jusqu'à 50 personnes? ** **

Les chiffres sont présentés ensemble.

from functools import reduce
from operator import mul
import matplotlib.pyplot as plt
%matplotlib inline

plt.figure(figsize=(16,5))
x,y = [n for n in range(2,51)] , []
for n in x:
    a1 = [i for i in range(365,365-n,-1)]
    a2 = [365 for i in range(n)]
    y.append(1-reduce(mul, a1)/reduce(mul, a2))

plt.bar(x,y)
plt.grid()
plt.show()

download.png

40% pour 20 personnes Environ 97% dans une classe de 50 personnes Il semble y avoir quelqu'un avec le même anniversaire.

Si c'est une entreprise, je pense qu'il y a 100 personnes, donc il devrait y avoir des personnes avec presque le même anniversaire.

Gacha avec 1% de chances de toucher, quelle est la probabilité de perdre 100 fois de suite?

Si vous frappez avec une chance de 1% lorsque vous dessinez un gacha, il y a une probabilité que vous manquiez 100 fois de suite Combien de temps cela prendra-t-il?

Est-il sûr de frapper parce que je ne tire que ça? !! ?? !!

Probabilité de sortir 100 fois de suite = Probabilité de sortir en tirant une fois ^ (100)

En d'autres termes

(\frac{99}{100})^{100}

est.

Quand je calcule le ratio

print('{:%}'.format((99/100)**100))

36.603234%

Ne pensez-vous pas que cela se produira avec une bonne probabilité?

Est-ce vraiment un triple festival! !! !! Il y a des moments où je pense.

** Combien tirez-vous et quelle est vos chances de gagner? **

Probabilité de frapper = 1-Probabilité de perdre Alors, réfléchissons au nombre de fois que vous tirez et à combien vous allez gagner.

import matplotlib.pyplot as plt
%matplotlib inline

plt.figure(figsize=(16,5))
x,y = [n for n in range(1,501)],[]
for n in x:
    y.append(1-(99/100)**n)

plt.bar(x,y)
plt.grid()
plt.show()

download-1.png

Dans ce cas, si vous tirez 100 fois, 30% se détacheront. Après avoir tiré 200 fois, le coup dépassera finalement les 80%.

Si vous le tirez 500 fois, il semble qu'il ne se détachera presque jamais. Cependant, ce n'est pas un succès sûr, donc si vous n'êtes pas chanceux, vous risquez de vous en sortir.

Y a-t-il vraiment 1% de chances de gagner? Simulons.

Comptez le nombre de fois où vous frappez le gacha 100 fois avec une chance de 1%.

import random
import matplotlib.pyplot as plt
%matplotlib inline

weights = [0.99,0.01]
d = {b:0 for b in range(101)}
for p in range(10000):
    a = 0
    for i in range(100):
        tf = random.choices([False,True], weights=weights)[0]
        if tf:
            a=i+1
            break
    d[a]+=1

plt.figure(figsize=(16,5))
x = list(d.keys())
y = list(d.values())
plt.bar(x,y)
plt.grid()
plt.show()

download-2.png

0 est le nombre de personnes qui ont raté, et les autres sont le nombre de fois qu'elles ont frappé.

Avec la probabilité ci-dessus, 36% des personnes seront absentes, donc si c'est 10 000, il y aura environ 3 600 personnes.

Si vous posez un questionnaire à environ 10000 personnes et que le nombre de personnes qui sont hors de cette plage diminue Vous pouvez voir que la probabilité de gacha est manipulée. En premier lieu, il est difficile d'adresser un questionnaire à un grand nombre de personnes.

Quelle est la probabilité que la série japonaise s'emmêle jusqu'à la course finale?

Il s'agit de baseball. Le vainqueur de la série Japon est celui qui l'a achetée quatre fois en premier, et elle aura lieu sept fois au total. Lorsque la probabilité de gagner ou de perdre est de 50% pour SE et PA Quelle est la probabilité de s'emmêler jusqu'au 7e tour?

Il semble bon de considérer toutes les combinaisons pour trouver la probabilité. Parce que ça se terminera quand 4 victoires ou 4 défaites sortiront Combinaisons qui n'ont pas été jumelées jusqu'à 6 courses

import itertools

p4 = [i for i in itertools.product(['Gagner','négatif'],repeat=4) if i.count('Gagner')==4 or i.count('négatif')==4]#Se termine sur 4 courses
p5 = [i for i in itertools.product(['Gagner','négatif'],repeat=5) if (i[0:4].count('Gagner')<4 and i[0:4].count('négatif')<4) and (i.count('Gagner')==4 or i.count('négatif')==4)]#Se termine dans 5 courses
p6 = [i for i in itertools.product(['Gagner','négatif'],repeat=6) if (i[0:5].count('Gagner')<4 and i[0:5].count('négatif')<4) and (i.count('Gagner')==4 or i.count('négatif')==4)]#Se termine dans 6 courses
p7 = [i for i in itertools.product(['Gagner','négatif'],repeat=6) if i[0:6].count('Gagner')<4 and i[0:6].count('négatif')<4]#Ne se termine pas par 6 courses

print('Se termine sur 4 courses' , len(p4))
for a in p4:
    print(' '.join(a))
print('Se termine dans 5 courses' , len(p5))
for a in p5:
    print(' '.join(a))
print('Se termine dans 6 courses' , len(p6))
for a in p6:
    print(' '.join(a))
print('Ne se termine pas par 6 courses' , len(p7))
for a in p7:
    print(' '.join(a))

Termine sur 4 courses 2 Gagner, gagner, gagner, gagner Négatif Négatif Négatif

Termine sur 5 courses 8 Gagner, gagner, gagner, gagner Gagner, gagner, gagner, gagner Gagner, gagner, gagner, gagner Jeu Négatif Négatif Négatif gagnant gagnant gagnant Correspondance négative Négative Négatif Négatif Jeu Négatif Jeu négatif négatif négatif

Encore 6 courses 20 Gagner, gagner, gagner, gagner Gagner, gagner, gagner, gagner, gagner Gagner, gagner, gagner, gagner Gagner Gagner le jeu Négatif Gagner, gagner, gagner, gagner, gagner Gagner, gagner, gagner, gagner Jeu jeu jeu jeu jeu Gagner, gagner, gagner, gagner Jeu Négatif Jeu Négatif Jeu jeu jeu jeu jeu Victoire négative victoire victoire défaite Victoire négative victoire victoire défaite Négatif Victoire Négatif Négatif Victoire négative Victoire négative gagnée Jeu négatif Jeu négatif Négatif Jeu négatif Jeu négatif Negative Negative Win Win Win Négatif Négatif Gagner Négatif Jeu négatif Jeu négatif Jeu négatif Négatif Négatif Négatif Victoire

Ne se termine pas par 6 courses 20 Gagner Gagner Gagner Gagner Négatif Gagner le jeu Gagner le jeu Gagner le jeu Gagner le jeu Win Win Game Defeat Win Jeu jeu jeu jeu jeu Jeu de jeu jeu de jeu Jeu jeu jeu jeu jeu Jeu jeu jeu jeu jeu Jeu jeu jeu jeu jeu Gagner la partie gagner la partie gagner Négatif Win Win Win Négatif Victoire négative Négatif gagne Négatif gagne Jeu négatif Jeu négatif Victoire négative Victoire négative Victoire négative Victoire négative Negative Negative Win Win Win Défaite négative gagnez la défaite Négatif Négatif Victoire Négatif Négatif Négatif Négatif Victoire

Combinaison qui ne se termine pas par 6 courses / Combinaison jusqu'à 6 courses Compte tenu de la combinaison, «20 / (2 + 8 + 20 + 20)» est 0,4 = 40%.

Compte tenu de la combinaison qui peut être jouée en 7 jeux, la combinaison qui ne se termine pas dans ces 6 jeux Il y a 40 façons, soit deux fois plus que 20.

Considérant que la probabilité de gagner ou de perdre est de moitié 40 voies × (1/2) ^ 7 = 5/16 = 31,25%

Compte tenu de la probabilité, «31,25%» semble aller au 7e tour.

Dans tous les cas, 30% seront emmêlés jusqu'au 7e tour.

Résumé

Si vous pensez à divers problèmes de probabilité et les intégrez dans le programme Je pense que vous améliorerez votre programmation.

Résolvons divers problèmes.

35 jours avant de devenir ingénieur

Informations sur l'auteur

HP d'Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Vous serez ingénieur dans 100 jours ――Jour 63 ――Programmation ――À propos de la probabilité 1
Vous serez ingénieur dans 100 jours ――Jour 65 ――Programmation ――A propos de la probabilité 3
Vous serez ingénieur dans 100 jours ――Jour 64 ――Programmation ――À propos de la probabilité 2
Vous serez ingénieur dans 100 jours ――Jour 71 ――Programmation ――À propos du scraping 2
Vous serez ingénieur dans 100 jours ――Jour 61 ――Programmation ――A propos de l'exploration
Vous serez ingénieur dans 100 jours ――Jour 74 ――Programmation ――À propos du scraping 5
Vous serez ingénieur dans 100 jours ――Jour 73 ――Programmation ――À propos du scraping 4
Vous serez ingénieur dans 100 jours ――Jour 75 ――Programmation ――À propos du scraping 6
Vous deviendrez ingénieur dans 100 jours --Jour 68 --Programmation --A propos de TF-IDF
Vous serez ingénieur dans 100 jours ――Jour 70 ――Programmation ――À propos du grattage
Vous serez ingénieur dans 100 jours ――Jour 82 ――Programmation ――À propos de l'apprentissage automatique 7
Vous serez ingénieur dans 100 jours ――Jour 79 ――Programmation ――À propos de l'apprentissage automatique 4
Vous serez ingénieur dans 100 jours ――Jour 76 ――Programmation ――À propos de l'apprentissage automatique
Vous serez ingénieur dans 100 jours ―― Jour 80 ―― Programmation ―― À propos de l'apprentissage automatique 5
Vous serez ingénieur dans 100 jours ――Jour 78 ――Programmation ――À propos de l'apprentissage automatique 3
Vous serez ingénieur dans 100 jours ――Jour 84 ――Programmation ――À propos de l'apprentissage automatique 9
Vous serez ingénieur dans 100 jours ――Jour 83 ――Programmation ――À propos de l'apprentissage automatique 8
Vous serez ingénieur dans 100 jours ――Jour 77 ――Programmation ――À propos de l'apprentissage automatique 2
Vous serez ingénieur dans 100 jours ――Jour 85 ――Programmation ――À propos de l'apprentissage automatique 10
Vous serez ingénieur dans 100 jours - Jour 27 - Python - Exercice Python 1
Vous serez ingénieur dans 100 jours - Jour 34 - Python - Exercice Python 3
Vous serez ingénieur dans 100 jours - Jour 31 - Python - Python Exercice 2
Vous serez ingénieur dans 100 jours ――Jour 24 ―― Python ―― Bases du langage Python 1
Vous serez ingénieur dans 100 jours ――Jour 30 ―― Python ―― Bases du langage Python 6
Vous serez ingénieur dans 100 jours ――Jour 25 ―― Python ―― Bases du langage Python 2
Vous serez ingénieur dans 100 jours ―― Jour 60 ―― Programmation ―― À propos de la structure des données et de l'algorithme de tri
Vous serez ingénieur dans 100 jours - Jour 29 - Python - Bases du langage Python 5
Vous serez ingénieur dans 100 jours - Jour 33 - Python - Bases du langage Python 8
Vous serez ingénieur dans 100 jours --Jour 26 --Python --Basiques du langage Python 3
Vous devenez ingénieur en 100 jours - Jour 35 - Python - Ce que vous pouvez faire avec Python
Vous serez ingénieur dans 100 jours --Jour 32 --Python --Basiques du langage Python 7
Vous serez ingénieur dans 100 jours --Jour 28 --Python --Les bases du langage Python 4
Vous devenez ingénieur en 100 jours ――Jour 67 ――Programmation ――A propos de l'analyse morphologique
Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel
Si vous tirez une loterie avec 1% de chances d'apparaître 100 fois de suite, gagnerez-vous une fois?
Si vous écrivez View decorator dans urls.py dans Django, la liste sera plus élevée.
Si une exception survient dans la fonction, elle sera transmise à l'appelant 2
Si une exception survient dans la fonction, elle sera transmise à l'appelant 1