Plötzlich Code
Bingo.py
# -*- coding: utf-8 -*-
u"""Skript, das die Wahrscheinlichkeit von BINGO simuliert
input:
times =Häufigkeit, mit der der Lotteriemaschine gedreht wird, card_num =Anzahl der Karten
outpu:
Wahrscheinlichkeit, auch nur einen zu bekommen
"""
import sys
from random import sample
#Loch
HIT = True
NOHIT = False
def generate_card():
u"""Karte generieren
5x5 Mitte(3 Zeilen 3 Spalten)Karte mit einem Loch in
B(1. Reihe) 1 - 15
I(2. Reihe) 16 - 30
N(3. Reihe) 31 - 45
G(4. Reihe) 46 - 60
O(5. Reihe) 61 - 75
:returns: array card, length=25
"""
cards = []
for i in range(5):
cards.extend(sample(range(15 * i + 1, 15 * (i + 1)), 5))
cards[12] = HIT
return cards
def check_bingo(card):
u"""Ob Sie BINGO sind
Nur Urteil
param: array
:returns: boolean
"""
if card.count(HIT) < 5:
return False
for i in range(5):
if NOHIT not in card[i * 5: (i + 1) * 5]:
return True
for i in range(5):
if NOHIT not in card[i: i + 21: 5]:
return True
if NOHIT not in card[0: 24: 6]:
return True
if NOHIT not in card[4: 21: 4]:
return True
return False
def print_card(card):
for i, v in enumerate(card):
if v == HIT:
v = "o"
elif v == NOHIT:
v = "x"
sys.stdout.write("%3s" % str(v))
if (i % 5 == 4):
print()
print()
try:
times = int(sys.argv[1])
except IndexError:
times = 5
try:
card_num = int(sys.argv[2])
except IndexError:
card_num = 10000
hit_count = 0
for i in range(card_num):
card = generate_card()
lots = sample(range(1, 76), times)
card_hole = [(HIT if (x == HIT or x in lots) else NOHIT) for x in card]
# print_card(card)
# print_card(card_hole)
if check_bingo(card_hole):
hit_count += 1
print(str(times) + u"Wahrscheinlichkeit von nur einem BINGO beim ersten Mal:")
p = hit_count / card_num
print("%s (%.1f %%)" % (str(p), p * 100))
Gist: https://gist.github.com/0c11f757334ba9ef7b1f
Eingang: Häufigkeit, mit der der Lotteriemaschine gedreht wird Anzahl der Karten (Anzahl der Simulationen) output: Wahrscheinlichkeit von nur einem BINGO
Sie sollten in der Lage sein, die Erklärung jeder Funktion in den Kommentaren zu verstehen.
Der Teil, in dem Sie wie Python schreiben können Ich denke, dass der Teil, der beurteilt, ob die Karte (BINGO-Karte) getroffen wird oder nicht, auf Python-ähnliche Weise geschrieben ist (ich wollte hier nur einen Prozess machen)
#Urteil in der 4. Spalte
NOHIT not in card[3:3 + 21:5]
#Beurteilung diagonal von links oben nach rechts unten
NOHIT not in card[0:24:6]
Python-Arrays können mit dem Array [start: end: step] abgerufen werden, sodass Beurteilungen intelligent geschrieben werden können.
Beispiel für die Ausführungsausgabe
>> python3 bingo.py 5 10000
Wahrscheinlichkeit von nur einem BINGO beim 5. Mal:
0.0003 (0.0 %)
Es spielt keine Rolle, aber was ich diesmal in Flake 8 als Codierungsstandard für Python gelernt habe Zwischen den Funktionen müssen zwei Zeilen offen sein Setzen Sie keine Leerzeichen auf die ** rechte Seite ** des Array-Doppelpunkts (wie das Argument Komma).
Ich weiß immer noch nicht, wie ich einen Dokumentblock schreiben soll, also werde ich lernen
Recommended Posts