Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.

Einführung

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

Es war, als Herr Tomoe Shirayuki "Yacht" in der Distribution "World Asobi Taizen 51" spielte.

"Wahl ist hier eine Verschwendung"

(Die Punktzahl zu dieser Zeit war 20)

Ich fragte mich plötzlich, also recherchierte ich.

Yacht ist ein Spiel, bei dem 5 Würfel gewürfelt werden, um eine Hand zu machen, und Choice ist einer davon.

Auswahl ist eine Rolle, bei der die Summe aller Augen bewertet wird.

Fazit

20 ist eine Wahl Wahl "Ja"

Vorbereitung

Berücksichtigen Sie beim Werfen eines einzelnen Würfels mit 1 bis 6 Augen den Durchschnitt der herauskommenden Zahlen.

(* Das Aussehen der Augen ist auch sicher)

Hier beträgt die Gesamtzahl der Augen 21, und es kann erwartet werden, dass jedes Auge gleichmäßig erscheint, sodass der zu berechnende Durchschnitt $ E (x) $ ist $ E(x) = \frac{1}{6} \times 21 = \frac{7}{2} $ Kann berechnet werden als.

Das auf diese Weise erhaltene $ E (x) $ wird als erwarteter Wert von $ X $ bezeichnet. $ \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} $ Ist erforderlich.

Hauptthema

Wenn Sie nun 5 Schwerter gleichzeitig werfen, berücksichtigen Sie den Durchschnitt der Gesamtzahl der Würfe.

Zu diesem Zeitpunkt sind die Wahrscheinlichkeiten für die fünf Würfel unabhängig, sodass der Durchschnitt durch einfaches Addieren erhalten werden kann.

Mit anderen Worten $ E(x) = \frac{7}{2} \times 5 = \frac{35}{2} $ Wird sein.

Wenn $ X $ eine stochastische Variable ist und $ a $ und $ b $ Konstanten sind $ E(aX+b) = aE(x)+b $ Ist wahr, also ersetze $ E (X) = \ frac {7} {2} $, $ a = 5 $, $ b = 0 $

Trainieren

Bisher habe ich Mathematik verwendet, um den Durchschnitt der Auswahlmöglichkeiten zu ermitteln.

~~ Aber ich habe so viel vergessen, also weiß ich nicht, ob es richtig ist ... ~~

Von nun an werden wir Python verwenden, um zu überprüfen, ob der berechnete Durchschnitt korrekt ist.

Außerdem wurde bestätigt, dass alle folgenden Codes für Google Colab funktionieren.

Durchschnittliche Berechnung

Die Strategie ist einfach.

Schütteln Sie 100 Millionen Mal 5 Würfel, um die Gesamtzahl der Augen zu ermitteln. Wenn Sie als Nächstes den Durchschnitt ermitteln, können Sie den zu findenden Durchschnitt ermitteln.

Mit anderen Worten, das Gesetz der Zahlen.

Der Code, den ich tatsächlich ausprobiert habe, ist unten.

import numpy as np

#Anzahl von Versuchen
N = 1 * 10**8

#Auswahlausführung
x = np.random.randint(1, 6+1, (N, 5))
x = x.sum(axis=1)

#Durchschnittliche Berechnung
print(np.mean(x))
# 17.4996012

Das Ergebnis war "17.4996012", was fast dem Berechnungsergebnis entsprach.

Eine kurze Erklärung.

Erstellen Sie in Zeile 7 eine Zufallszahl von 1 bis 6 mit der Größe (N, 5).

Berechnen Sie in Zeile 8 die Summe aller 5 Würfel.

Histogramm

Es war einfacher als ich erwartet hatte, also habe ich als Bonus ein Histogramm erstellt.

Der tatsächlich verwendete Code lautet wie folgt.

import numpy as np
import matplotlib.pyplot as plt

#Anzahl von Versuchen
N = 1 * 10**8

#Auswahlausführung
x = np.random.randint(1, 6+1, (N, 5))
x = x.sum(axis=1)

#Histogrammgenerierung
result = plt.hist(x, bins=26, alpha=0.5, color=(0.43, 0.25, 0.91))

#Hilfsleitung
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)

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

plt.savefig("fig.png ")

Das resultierende Histogramm ist wie folgt.

fig.png

In diesem Histogramm ist die schwarz gepunktete Linie der Durchschnitt und die weiß gepunktete Linie 20.

Daran können Sie auf einen Blick erkennen, dass es über dem Durchschnitt liegt.

Wahrscheinlichkeit weniger als 20

Wie hoch ist nun die Wahrscheinlichkeit, dass Ihre Auswahl weniger als 20 Punkte beträgt?

Wenn dies bekannt ist, wird es überzeugender sein.

Bitten Sie Python also, es ungefähr zu finden.

import numpy as np

#Anzahl von Versuchen
N = 1 * 10**8

#Auswahlausführung
x = np.random.randint(1, 6+1, (N, 5))
x = x.sum(axis=1)

#Frequenzberechnung
uni, counts = np.unique(x, return_counts=True)
d = {str(u): c for u, c in zip(uni, counts)}

#Auftrittswahrscheinlichkeit weniger als 20
temp = [v for k, v in d.items() if int(k) < 20]
print(f"{(sum(temp) / N)*100:.02f}%")
# 69.48%

Das Ergebnis war 69,48%, und es wurde festgestellt, dass etwa 70% der Gesamtzahl weniger als 20 waren.

Wenn Sie die Richtung der Ungleichungszahl in der 15. Zeile dieses Programms ändern, können Sie die Wahrscheinlichkeit des Auftretens von 21 oder mehr leicht überprüfen.

Das Ergebnis ist 22,14%. Mit anderen Worten, die Wahrscheinlichkeit, eine höhere Hand zu bekommen, liegt bei etwa 20%.

Es fühlt sich teuer an, weil es durch die Gacha der Soshage vergiftet wird, aber ...

abschließend

Asobi Enzyklopädie Spiel Spaß zu analysieren

Recommended Posts

Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ich habe den Befehl worldcup verwendet, um das Ergebnis der Weltmeisterschaft zu überprüfen.
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
[Einführung in Python] Eine ausführliche Erklärung der in Python verwendeten Zeichenkettentypen!
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Ich möchte den Fortschritt in Python anzeigen!
[Abgeschlossene Version] Versuchen Sie, die Anzahl der Einwohner der Stadt anhand der Adressliste mit Python herauszufinden
Ich habe gawk verwendet, um den Maximalwert für NF herauszufinden.
So finden Sie heraus, welche Art von Datei in S3 in Python gespeichert ist
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
So ermitteln Sie den Koeffizienten der ungefähren Kurve, die in Python durch die Scheitelpunkte verläuft
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
Ich habe mir die Versionen von Blender und Python angesehen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Ich möchte R-Datensatz mit Python verwenden
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python ④ optimiert werden kann
Ich habe versucht herauszufinden, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich möchte nur das 95% -Konfidenzintervall des Unterschieds im Bevölkerungsverhältnis in Python ermitteln
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
[Python] Informieren Sie sich über pip
Finde Fehler in Python
Über die Funktionen von Python
So finden Sie die optimale Anzahl von Clustern für k-means
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren
Verwenden Sie Hash, um das Kollisionsurteil von etwa 1000 Bällen in Python zu erleichtern (im Zusammenhang mit dem neuen Corona-Virus).
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, den Trend der Anzahl der Schiffe in der Bucht von Tokio anhand von Satellitenbildern zu ermitteln.
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Programmieren, um in der Welt zu kämpfen 5-3
Ich habe versucht herauszufinden, wie ich den Arbeitsablauf mit Excel × Python, meiner Artikelzusammenfassung ★, optimieren kann
So bestimmen Sie die Existenz eines Selenelements in Python