J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.

introduction

https://youtu.be/iNAUzUEsgs4?t=8691

C'était quand M. Tomoe Shirayuki jouait "Yacht" dans la distribution "World Asobi Taizen 51".

"Le choix est un gaspillage ici"

(Le score à ce moment-là était de 20)

Je me suis soudainement demandé, alors j'ai fait des recherches.

Yacht est un jeu de lancer de 5 dés pour faire une main, et Choice en fait partie.

Le choix est un rôle où la somme de tous les yeux est notée.

Conclusion

20 est un choix de choix "Oui"

Préparation

Lorsque vous lancez un seul dé avec 1 à 6 yeux, considérez la moyenne des nombres qui sortent.

(* L'apparence des yeux est également certaine)

Ici, le nombre total d'yeux est de 21 et on peut s'attendre à ce que chaque œil apparaisse uniformément, donc la moyenne $ E (x) $ à calculer est $ E(x) = \frac{1}{6} \times 21 = \frac{7}{2} $ Peut être calculé comme.

Le $ E (x) $ ainsi obtenu est appelé la valeur attendue de $ X . $ \begin{eqnarray} E(x) &=& x_1p_1 + x_2p_2 + \cdots + x_np_n \ &=& \sum^n_{k=1}x_kp_k\ &&(X = x_1, x_2, ..., x_n)(P=p_1, p_2, ..., p_n) \end{eqnarray} $$ Est requis.

Sujet principal

Maintenant, si vous lancez 5 épées en même temps, considérez la moyenne du nombre total de rouleaux.

À ce stade, les probabilités pour les cinq dés sont indépendantes, donc la moyenne peut être obtenue en les additionnant simplement.

En d'autres termes $ E(x) = \frac{7}{2} \times 5 = \frac{35}{2} $ Sera.

Quand $ X $ est une variable stochastique et $ a $ et $ b $ sont des constantes $ E(aX+b) = aE(x)+b $ Est vrai, alors remplacez $ E (X) = \ frac {7} {2} $, $ a = 5 $, $ b = 0 $

Entraine toi

Jusqu'à présent, j'ai utilisé les mathématiques pour trouver la moyenne des choix.

~~ Mais j'ai tellement oublié, donc je ne sais pas si c'est correct ... ~~

Désormais, nous utiliserons Python pour vérifier que la moyenne calculée est correcte.

De plus, tous les codes suivants ont été confirmés pour fonctionner avec Google Colab.

Calcul moyen

La stratégie est simple.

Secouez 5 dés 100 millions de fois et trouvez le total des yeux. Ensuite, si vous trouvez la moyenne, vous pouvez trouver la moyenne à trouver.

En d'autres termes, la loi des nombres.

Le code que j'ai réellement essayé est ci-dessous.

import numpy as np

#Nombre d'essais
N = 1 * 10**8

#Exécution de choix
x = np.random.randint(1, 6+1, (N, 5))
x = x.sum(axis=1)

#Calcul moyen
print(np.mean(x))
# 17.4996012

Le résultat était `` 17.4996012 '', ce qui était presque le même que le résultat du calcul.

Une brève explication.

Sur la ligne 7, créez un nombre aléatoire de 1 à 6 avec la taille (N, 5).

À la ligne 8, calculez la somme de chacun des 5 dés.

histogramme

C'était plus facile que prévu, j'ai donc créé un histogramme en bonus.

Le code réellement utilisé est le suivant.

import numpy as np
import matplotlib.pyplot as plt

#Nombre d'essais
N = 1 * 10**8

#Exécution de choix
x = np.random.randint(1, 6+1, (N, 5))
x = x.sum(axis=1)

#Génération d'histogramme
result = plt.hist(x, bins=26, alpha=0.5, color=(0.43, 0.25, 0.91))

#Ligne auxiliaire
ex = 17.5
min_ylim, max_ylim = plt.ylim()
plt.axvline(17.5, color='k', linestyle='dashed', linewidth=1)
plt.text(ex*1.05, max_ylim*0.9, f"E(x)={ex}")
plt.axvline(20, color='w', linestyle='dashed', linewidth=1)

#étiquette
plt.title('Distribution of Scores in "Choice"')
plt.xlabel("point")
plt.ylabel("frequency")

plt.savefig("fig.png ")

L'histogramme résultant est le suivant.

fig.png

Dans cet histogramme, la ligne pointillée noire est la moyenne et la ligne pointillée blanche est 20.

De là, vous pouvez voir en un coup d'œil qu'il est au-dessus de la moyenne.

Probabilité inférieure à 20

Maintenant, quelle est la probabilité que votre score de choix soit inférieur à 20?

Si cela est connu, ce sera plus convaincant.

Alors, demandez à Python de le trouver approximativement.

import numpy as np

#Nombre d'essais
N = 1 * 10**8

#Exécution de choix
x = np.random.randint(1, 6+1, (N, 5))
x = x.sum(axis=1)

#Calcul de fréquence
uni, counts = np.unique(x, return_counts=True)
d = {str(u): c for u, c in zip(uni, counts)}

#Probabilité d'occurrence inférieure à 20
temp = [v for k, v in d.items() if int(k) < 20]
print(f"{(sum(temp) / N)*100:.02f}%")
# 69.48%

Le résultat était de 69,48% et il a été constaté qu'environ 70% du total était inférieur à 20.

De plus, si vous changez la direction du nombre d'inégalité sur la 15e ligne de ce programme, vous pouvez facilement vérifier la probabilité d'occurrence de 21 ou plus.

Le résultat est de 22,14%, en d'autres termes, la probabilité d'obtenir une main plus élevée est d'environ 20%.

Cela semble cher car il est empoisonné par le gacha du soshage, mais ...

en conclusion

Jeu d'encyclopédie Asobi amusant à analyser

Recommended Posts

J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.
[Note] À propos du rôle du trait de soulignement "_" en Python
J'ai essayé de découvrir les grandes lignes de Big Gorilla
Découvrez la largeur apparente d'une chaîne en python
Python --Trouvez le nombre de groupes dans l'expression regex
J'ai écrit le code pour écrire le code Brainf * ck en python
J'ai utilisé la commande coupe du monde pour vérifier le résultat de la Coupe du monde.
Je veux connaître la population de chaque pays du monde.
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
[Introduction à Python] Une explication approfondie des types de chaînes de caractères utilisés dans Python!
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Trouvez la solution de l'équation d'ordre n avec python
Je veux afficher la progression en Python!
[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python
J'ai utilisé gawk pour connaître la valeur maximale qui entre dans NF.
Comment savoir quel type de fichier est stocké dans S3 en Python
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
J'ai essayé de représenter graphiquement les packages installés en Python
Connaissez l'emplacement du fichier de définition de classe Python.
J'ai vérifié les versions de Blender et Python
Je veux écrire en Python! (3) Utiliser des simulacres
Un mémorandum sur la mise en œuvre des recommandations en Python
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Je veux utiliser le jeu de données R avec python
J'ai essayé de résumer les opérations de chaîne de Python
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ②
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ④
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel x Python ⑤
Je veux juste trouver l'intervalle de confiance à 95% de la différence de ratio de population en Python
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ①
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ③
[Python] En savoir plus sur pip
Trouver des erreurs en Python
À propos des fonctionnalités de Python
Comment trouver le nombre optimal de clusters pour les k-moyennes
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé de résumer le code souvent utilisé dans Pandas
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
J'ai essayé de résumer les commandes souvent utilisées en entreprise
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Je veux connaître la nature de Python et pip
Je veux connaître la légende du monde des technologies informatiques
Trouver les valeurs propres d'une vraie matrice symétrique en Python
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
Utilisez le hachage pour alléger le jugement de collision d'environ 1000 balles en Python (lié au nouveau virus corona)
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de trouver la tendance du nombre de navires dans la baie de Tokyo à partir d'images satellites.
Programmation pour combattre dans le monde ~ 5-5,5-6
Programmer pour combattre dans le monde 5-3
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel × Python, mon résumé d'article ★
Comment déterminer l'existence d'un élément sélénium en Python