Python und zufällig.randint()
Ich habe Folgendes problem aus der Schule: der Lehrer hat uns gebeten, zu teilen, zu Seiten mit 2/3 und 1/3 Wahrscheinlichkeiten mithilfe der randint
Funktion.
Ich verstehe wirklich nicht, wie diese randint
Funktion auf Wahrscheinlichkeiten arbeitet.
import random
rand = (random.randint(1,100))
if rand >= 67 :
print ("obj A 1/3")
else:
print ("obj B 2/3")
Funktioniert das nicht.
- "wirklich nicht verstehen, wie das funktioniert... funktioniert nicht" - was?! Bitte Lesen Sie stellen, und versuchen jemanden zu finden, die helfen können Sie besser übersetzen auf Englisch.
- Denken Sie daran, dass die Einrückung ist essential in Pythong, so kümmern sich um Sie.
- Was verstehen Sie nicht? Verstehen Sie, was
random.randint()
ist zu tun? Verstehen Sie, was Variablen-Zuweisung ist zu tun? Verstehen Sie Bedingungen? - Ja, ich verstehe alles. Was ich nicht verstehe ist, wie man mit randint zu unterscheiden zwischen 1/3 und 2/3.
- Scheint eher ein Mathe-Problem als ein Programmier-Problem - 2/3 (ungefähr) 67/100
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Schlüssel Fertigkeit, die Sie lernen müssen, ist die Verwendung der Dokumentation. Eine kurze Suche brachte mich zu der Python-manual-Seite zu
random.randint()
:Ihre variable erstellen
rand
die gleich einer Zufallszahl>= 1
und<= 100
. Die nächste Zeile ist eine bedingte, die prüft, ob Ihre Anzahl ist>= 67
...dies wird nur dann wahr, ~1/3 der Zeit.Seite Hinweis: es gibt keinen Vorteil zum verwenden einer Zufallszahl zwischen 1-100. Dein code wäre viel einfacher (und daher Pythonic) wenn Sie sich für genau das, was Sie wollte (also 1/3).
Warum so kompliziert? Vereinfachung auf der Ebene des Nenners: 3. Generieren Sie einen von drei Ganzzahlen, die mit gleicher Wahrscheinlichkeit auf. Erhalten Sie, 1, 2, und 3; jeweils 1/3 der Zeit.
Ist das einfach genug für Sie zu verstehen? In deinem original-code, den Sie generieren 100 verschiedene zahlen. Du hast das "Ein" Teil in 34 dieser Fälle. Das sind 34%, ein wenig mehr als die gewünschten 1/3.
Ergibt dies eine Zahl von 1 bis 100. Also 1/3 ist über 33 und 2/3 über 66. So die ersten
if
Anweisung ist zu sehen, dass, wenn die Anzahl gleich oder größer als 67, drucken"obj A 1/3"
, das ist dieser Teil:Etwas anderes, dann drucken
"obj A 2/3"
, das ist der Letzte Teil:Natürlich müssen Sie
print()
wie dass und, so nichtprint ()
es sei denn, Sie wollen einen Syntax-Fehler. Auch die Mathematik ist falsch. Das Programm sollte Aussehen wie dieses:Den oben genannten Mathe ist für die meisten genau wie du eine 1/3 chance auf eine der zahlen, die dem entspricht, was der Zähler in der Fraktion, x auf 3, wo
rand
ist gleich x.Ich glaube, ich sehe was du versuchst zu tun, aber Sie brauchen, um zu starten hier durch Lesen auf random. Überprüfen Sie heraus dieses Frage/Antwort, ich denke, es wird Dinge besser erklären. Ihre aktuellen code erhalten Sie einen Syntaxfehler, ich denke, was Sie suchen, zu tun, ist dies:
Ich flehe dich an, bitte Lesen, bis auf python, obwohl. PS. Eine präzisere Lösung wäre das generieren einer Zufallszahl int von 1 bis 3 anstelle des Denkens über das problem in Bezug auf die von 1-100. Dann ist die Wahrscheinlichkeit, wird genauer, da 1/3 = 33.3333... von der Zeit, die schwer zu vertreten mit 1-100.
random.randint(1,3)
und dannif rand <= 1
undelse
Zustand, werden Ihnen die anderen 2/3rds.