Janken de Sazae J'ai essayé de vérifier la valeur théorique et la valeur mesurée de la probabilité de la même main 5 fois consécutives avec Ruby

TL;DR Si vous décidez d'un mouvement aléatoire, la probabilité que le même mouvement apparaisse cinq fois de suite au moins une fois tous les 30 ans est La valeur théorique est «99,999999%» et la valeur mesurée est «99,999%». Néanmoins, Sazae n'a jamais fait le même mouvement cinq fois de suite pendant 30 ans. M. Sazae est aléatoire et ne joue pas. Il y a une personne à l'intérieur.

En premier lieu

Comme je l'ai appris sur Twitter, comme indiqué dans ↓, quand je suis allé avec "Sazae-san" et "Janken", la même main de Janken est sortie 5 fois de suite, le premier article en 30 ans d'histoire a frappé. Je vais. https://nlab.itmedia.co.jp/nl/articles/2006/08/news108.html

Pour la première fois en 30 ans, je trouve que c'est super rare, mais en fait, je vais essayer "calcul (théorie)" + "essai (mesure réelle)" pour voir à quel point c'est rare. (Puisque l'outil qui peut être utilisé rapidement à portée de main était Ruby, je l'ai écrit en Ruby)

supposition

Quel mouvement prendre avec Janken est complètement aléatoire (aléatoire équivalent à rand (3))

Calcul (théorie)

Probabilité d'obtenir la même main 5 fois de suite

Tout d'abord, la probabilité que la même main de Janken sorte 5 fois de suite est Tout premier coup (1) x même coup 4 fois (1/3 à la 4ème puissance) Parce que ça devient

SERIES_COUNT = 5 #5 fois de suite

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

=> 0.012345679012345677

C'est environ "1,2%".

Probabilité d'obtenir le même mouvement 5 fois de suite, même une fois tous les 30 ans

On dit que c'est une pierre-papier-ciseaux une fois par semaine, la première en 30 ans d'histoire, donc le nombre de ciseaux-papier-pierre jusqu'à présent est 1 [janken/week] * 30 [year] * 52 [week/year] = 1560 [janken] Il devient.

La probabilité que vous obteniez le même mouvement 5 fois de suite, même une fois après 1560 fois 1- (Probabilité de ne pas obtenir le même coup 5 fois de suite sur 1560 fois) Vous pouvez y penser.

Aussi, sur 1560 fois, les 4 dernières fois ne seront pas 5 fois consécutives à partir de là, donc Le nombre de fois où vous pouvez défier la même main 5 fois de suite sur 1560 fois 1560 - (5 - 1) = 1556 Il devient.

Par exemple, si c'est 10 fois au total, l'image d'essayer ↓ 10- (5-1) = 6 fois. ●●●●●○○○○○ ○●●●●●○○○○ ○○●●●●●○○○ ○○○●●●●●○○ ○○○○●●●●●○ ○○○○○●●●●●

La probabilité de ne pas obtenir le même coup 5 fois de suite est 1- (Probabilité d'obtenir le même coup 5 fois de suite) Alors 1 - 0.012345679012345677 Sera

Sur les 1560 fois, la probabilité que le même mouvement ne soit pas effectué 5 fois de suite signifie que la probabilité de ↑ sera de 1556 fois de suite. (1 - 0.012345679012345677) ^1556 = 0.00000000403024 Il devient.

La probabilité que le même mouvement soit effectué 5 fois de suite même une fois toutes les 1560 fois 1 - 0.00000000403024 = 0.99999999596976

Je ne peux pas aller à Eleven Nine, mais Eight Nine est presque à 100%. Si vous jouez à Janken chaque semaine pendant 30 ans, vous aurez la même main au moins une fois pendant 5 fois consécutives.

Celui qui laisse Ruby calculer


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

Essai (mesure réelle)

Utilisez la force brute pour jouer 1560 fois et vérifiez si la même main sort 5 fois de suite. Essayez 1 million de fois et mesurez combien de fois vous obtenez la même main pendant 5 fois consécutives.

Celui qui a laissé Ruby essayer


YEARS = 30
WEEKS_PER_YEAR = 52
SERIES_COUNT = 5

#Une fonction qui vérifie si la même valeur est consécutive 5 fois dans le tableau passé
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 d'essais

total_hit = 0 #Nombre de fois où la même main a été faite 5 fois de suite sur 1 million de fois

N.times {
  #30 ans de Janken
  values = []
  (YEARS * WEEKS_PER_YEAR).times {
    values << rand(3) #Rand de la main de Janken(3)Alternative avec
  }

  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 #1er de 1 million d'essais
=> 1.0      #2e essai de 1 million de fois
=> 0.999996 #3e sur 1 million d'essais

En principe, si vous essayez 1 million de fois, ce ne sera pas huit neuf. C'est aussi presque 100%. Si vous jouez à Janken chaque semaine pendant 30 ans, vous aurez la même main au moins une fois pendant 5 fois consécutives.

Postscript (essayé 1 milliard de fois)

La probabilité d'obtenir le même déménagement au moins une et cinq fois de suite après 30 ans d'entraînement hebdomadaire. Je l'ai essayé 1 milliard de fois et je l'ai confirmé. Le résultat est, 0.999998264 La probabilité est presque la même que 1 million d'essais (cinq neuf).

Résumé

M. Sazae, qui joue à la poubelle chaque semaine depuis environ 30 ans, Le fait que je n'ai jamais fait la même chose cinq fois de suite M. Sazae ne décide pas quoi faire au hasard Cela suggère que la volonté humaine y intervient.

Si vous jouez chaque semaine depuis 30 ans au hasard, vous devriez avoir 99,999% ou plus de chances d'obtenir le même coup 5 fois de suite. Si cela va à l'encontre de la théorie, cela signifie que l'intention humaine est impliquée.

Épilogue

Lorsque les entiers n, N, sont n <N, Probabilité de jouer N fois et d'avoir la même main n fois de suite Il est un peu suspect que le calcul de soit correct par la méthode décrite dans ↑.

N = 10 n = 5 À ce moment-là, le nombre de loteries était de 6 fois pour voir si le même mouvement pouvait être effectué 5 fois de suite.

La valeur théorique est huit neuf et la valeur mesurée est cinq neuf, ce qui est presque 100%, mais c'est la même chose. Étant donné que les chiffres sont différents en termes de précision, il est possible que le calcul de la valeur théorique soit incorrect.

Cela signifie-t-il qu'il existe d'autres conditions inférieures à la probabilité calculée en ↑ (= il devient plus difficile d'obtenir le même mouvement d'affilée)? .. ..

---///

Recommended Posts

Janken de Sazae J'ai essayé de vérifier la valeur théorique et la valeur mesurée de la probabilité de la même main 5 fois consécutives avec Ruby
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
J'ai essayé de résumer les bases de kotlin et java
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé de résumer les méthodes de Java String et StringBuilder
Je veux changer la valeur de l'attribut dans Selenium of Ruby
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
J'ai essayé de résoudre le problème de la séquence Tribonacci en Ruby, avec récurrence.
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai essayé de comparer la technologie d'infrastructure des ingénieurs ces jours-ci avec la cuisine.
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai vérifié le nombre de taxis avec Ruby
Je veux obtenir la valeur en Ruby
L'argument de link_to est nul (nul) et un lien inattendu a été généré, j'ai donc essayé de le vérifier
J'ai essayé de vérifier le fonctionnement de la requête http (Put) avec Talented API Tester
J'ai essayé d'étudier le mécanisme d'Emscripten en l'utilisant avec un solveur allemand
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai essayé de réduire la capacité de Spring Boot
J'ai essayé de résoudre le problème de la machine à karaoké Ruby (il y a un exemple de réponse)
J'ai essayé de résoudre le problème de la boisson bonus Ruby (il y a un exemple de réponse)
[Pour les débutants Swift] J'ai essayé de résumer le cycle de mise en page désordonné de ViewController et View
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
J'ai essayé JAX-RS et pris note de la procédure
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
[Ruby] Je souhaite inverser l'ordre de la table de hachage
Comment gérer différentes versions de rbenv et Ruby
J'ai essayé de résoudre le problème de création de carte de bingo Ruby (il y a un exemple de réponse)
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().