Sazae's Janken Ich habe versucht, den theoretischen Wert und den gemessenen Wert der Wahrscheinlichkeit derselben Hand 5 Mal hintereinander mit Ruby zu überprüfen

TL;DR Wenn Sie sich für einen zufälligen Zug entscheiden, ist die Wahrscheinlichkeit, dass derselbe Zug mindestens einmal in 30 Jahren fünfmal hintereinander auftritt, gleich Der theoretische Wert ist "99,999999%" und der gemessene Wert ist "99,999%". Trotzdem hat Sazae 30 Jahre lang nie fünf Mal hintereinander den gleichen Zug gemacht. Mr. Sazae ist zufällig und spielt nicht. Da ist eine Person drinnen.

An erster Stelle

Wie ich auf Twitter erfahren habe, kam, wie in ↓ gezeigt, als ich mit "Sazae-san" und "Janken" herumging, dieselbe Hand von Janken fünfmal hintereinander heraus, der erste Artikel in 30 Jahren Geschichte. Ich werde. https://nlab.itmedia.co.jp/nl/articles/2006/08/news108.html

Zum ersten Mal seit 30 Jahren habe ich das Gefühl, dass es sehr selten ist, aber tatsächlich werde ich versuchen, "Berechnung (Theorie)" + "Versuch (tatsächliche Messung)", um zu sehen, wie selten es ist. (Da das Tool, das schnell verwendet werden kann, Ruby war, habe ich es in Ruby geschrieben.)

Annahme

Welcher Schritt mit Janken zu machen ist, ist völlig zufällig (rand (3) äquivalente Zufälligkeit)

Berechnung (Theorie)

Wahrscheinlichkeit, 5 Mal hintereinander dieselbe Hand zu bekommen

Zuallererst ist die Wahrscheinlichkeit, dass dieselbe Hand von Janken fünfmal hintereinander herauskommt, gleich Jede erste Bewegung (1) x dieselbe Bewegung 4 Mal (1/3 nach der 4. Potenz) Weil es wird

SERIES_COUNT = 5 #5 mal hintereinander

rate_5 = 1.0 * (1.0 / 3.0) ** (SERIES_COUNT - 1)

=> 0.012345679012345677

Es geht um 1,2%.

Wahrscheinlichkeit, dass derselbe Zug fünfmal hintereinander ausgeführt wird, sogar einmal in 30 Jahren

Es wird gesagt, dass es sich einmal pro Woche um eine Stein-Papier-Schere handelt, die erste in 30 Jahren Geschichte, also ist die Anzahl der Stein-Papier-Scheren bisher 1 [janken/week] * 30 [year] * 52 [week/year] = 1560 [janken] Es wird.

Die Wahrscheinlichkeit, dass Sie den gleichen Zug 5 Mal hintereinander erhalten, auch einmal nach 1560 Mal 1- (Wahrscheinlichkeit, dass 1560 Mal nicht hintereinander derselbe Zug ausgeführt wird) ` Sie können es sich vorstellen als.

Von 1560 Mal werden die letzten 4 Mal nicht 5 Mal hintereinander sein Die Häufigkeit, mit der Sie dieselbe Hand 5 Mal hintereinander von 1560 Mal herausfordern können 1560 - (5 - 1) = 1556 Es wird.

Wenn es beispielsweise insgesamt 10 Mal ist, ist das Bild des Versuchs ↓ 10- (5-1) = 6 Mal. ●●●●●○○○○○ ○●●●●●○○○○ ○○●●●●●○○○ ○○○●●●●●○○ ○○○○●●●●●○ ○○○○○●●●●●

Die Wahrscheinlichkeit, dass 5 Mal hintereinander nicht derselbe Zug ausgeführt wird, beträgt 1- (Wahrscheinlichkeit, dass 5 Mal hintereinander derselbe Zug ausgeführt wird) Damit 1 - 0.012345679012345677 Wird sein

Von den 1560-mal bedeutet die Wahrscheinlichkeit, dass derselbe Zug nicht fünfmal hintereinander ausgeführt wird, dass die Wahrscheinlichkeit von ↑ 1556-mal hintereinander beträgt. (1 - 0.012345679012345677) ^1556 = 0.00000000403024 Es wird.

Die Wahrscheinlichkeit, dass der gleiche Zug 5 Mal hintereinander ausgeführt wird, sogar einmal in 1560 Mal Janken 1 - 0.00000000403024 = 0.99999999596976

Ich kann nicht zu Eleven Nine gehen, aber Eight Nine ist fast 100%. Wenn Sie 30 Jahre lang jede Woche Janken spielen, haben Sie 5 Mal hintereinander mindestens einmal dieselbe Hand.

Derjenige, der Ruby rechnen ließ


YEARS = 30
WEEKS_PER_YEAR = 52
SERIES_COUNT = 5

trial_probability = 1.0 * (1.0 / 3.0) ** (SERIES_COUNT - 1)
trial_n = YEARS * WEEKS_PER_YEAR
total_no_hit_probability = (1.0 - trial_probability) ** (trial_n - SERIES_COUNT + 1)
total_hit_probability = 1 - total_no_hit_probability

total_hit_probability
=> 0.9999999959697649

Versuch (tatsächliche Messung)

Verwenden Sie Brute Force, um tatsächlich 1560 Mal zu spielen, und prüfen Sie, ob dieselbe Hand 5 Mal hintereinander herauskommt. Versuchen Sie es 1 Million Mal und messen Sie, wie oft Sie 5 Mal hintereinander dieselbe Hand erhalten.

Derjenige, der Ruby versuchen ließ


YEARS = 30
WEEKS_PER_YEAR = 52
SERIES_COUNT = 5

#Eine Funktion, die prüft, ob derselbe Wert im übergebenen Array fünfmal hintereinander liegt
def check_serial_same_5(values)
  hit_count = 0

  (values.size - SERIES_COUNT + 1).times { |i|
      if values[i] == values[i + 1] &&
          values[i] == values[i + 2] &&
          values[i] == values[i + 3] &&
          values[i] == values[i + 4]
        hit_count += 1
      end
  }

  return hit_count
end

N = 1000000 #1 Million Versuche

total_hit = 0 #Anzahl der Male, die dieselbe Hand 5 Mal hintereinander von 1 Million Mal gemacht wurde

N.times {
  #Janken im Wert von 30 Jahren
  values = []
  (YEARS * WEEKS_PER_YEAR).times {
    values << rand(3) #Janken's Hand Rand(3)Alternative mit
  }

  hit = check_serial_same_5(values)

  if hit != 0
    total_hit += 1
  end
}

real_trial_probability = total_hit.to_f / N.to_f

real_trial_probability
=> 0.999998 #1. von 1 Million Versuchen
=> 1.0      #2. Versuch von 1 Million Mal
=> 0.999996 #3. von 1 Million Versuchen

Wenn Sie es 1 Million Mal versuchen, sind es im Prinzip nicht acht Neunen. Dies ist auch fast 100%. Wenn Sie 30 Jahre lang jede Woche Janken spielen, haben Sie mindestens einmal 5 Mal hintereinander dieselbe Hand.

Postscript (1 Milliarde Mal ausprobiert)

Die Wahrscheinlichkeit, nach 30 Jahren wöchentlich mindestens ein- und fünfmal hintereinander dieselbe Hand zu bekommen Ich habe es 1 Milliarde Mal versucht und es bestätigt. Ergebnis ist, 0.999998264 Die Wahrscheinlichkeit entspricht fast 1 Million Versuchen (fünf Neunen).

Zusammenfassung

Sazae, der seit ungefähr 30 Jahren jede Woche Junk spielt, Die Tatsache, dass ich noch nie fünf Mal hintereinander dasselbe gemacht habe Herr Sazae entscheidet nicht zufällig, was zu tun ist Es deutet darauf hin, dass der menschliche Wille dort eingreift.

Wenn Sie 30 Jahre lang jede Woche völlig zufällig gespielt haben, sollten Sie eine Chance von 99,999% oder mehr haben, 5 Mal hintereinander denselben Zug zu erhalten. Wenn es gegen die Theorie verstößt, bedeutet dies, dass die menschliche Absicht involviert ist.

Nachwort

Wenn die ganzen Zahlen n, N, n <N sind, Wahrscheinlichkeit, N-mal zu spielen und n-mal hintereinander dieselbe Hand zu haben Es ist etwas verdächtig, ob die Berechnung nach der in ↑ beschriebenen Methode korrekt ist.

N = 10 n = 5 Zu diesem Zeitpunkt war die Anzahl der Lotterien sechsmal, um zu sehen, ob der gleiche Zug fünfmal hintereinander ausgeführt werden konnte.

Der theoretische Wert ist acht neun und der gemessene Wert ist fünf neun, was fast 100% ist, aber es ist der gleiche. Da sich die Ziffern hinsichtlich der Genauigkeit unterscheiden, besteht die Möglichkeit, dass die Berechnung des theoretischen Wertes falsch ist.

Bedeutet das, dass es andere Bedingungen gibt, die niedriger sind als die in ↑ berechnete Wahrscheinlichkeit (= es wird schwieriger, den gleichen Zug hintereinander zu erzielen)? .. ..

---///

Recommended Posts

Sazae's Janken Ich habe versucht, den theoretischen Wert und den gemessenen Wert der Wahrscheinlichkeit derselben Hand 5 Mal hintereinander mit Ruby zu überprüfen
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe versucht, die Ergebnisse vor und nach der Date-Klasse mit einer geraden Zahl auszudrücken
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
Ich habe versucht, die Infrastrukturtechnologie der Ingenieure heutzutage mit dem Kochen zu vergleichen.
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe die Anzahl der Taxis mit Ruby überprüft
Ich möchte den Wert in Ruby erhalten
Das Argument von link_to ist nil (null) und ein unerwarteter Link wurde generiert, daher habe ich versucht, ihn zu überprüfen
Ich habe versucht, den Betrieb der http-Anfrage (Put) mit dem Talented API Tester zu überprüfen
Ich habe versucht, den Mechanismus von Emscripten mit einem deutschen Löser zu untersuchen
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich habe versucht, das Problem mit der Ruby-Karaoke-Maschine zu lösen (es gibt ein Beispiel für die Antwort).
Ich habe versucht, das Problem mit dem Ruby-Bonusgetränk zu lösen (es gibt ein Beispiel für die Antwort).
[Für Swift-Anfänger] Ich habe versucht, den chaotischen Layoutzyklus von ViewController und View zusammenzufassen
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit spiritueller Technik zu erhöhen
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Umgang mit verschiedenen Versionen von rbenv und Ruby
Ich habe versucht, das Problem bei der Erstellung von Ruby-Bingokarten zu lösen (es gibt ein Beispiel für die Antwort).
[Spring Boot] Ich möchte meine eigene Eigenschaftendatei hinzufügen und den Wert mit env.getProperty () abrufen.