Infinite Money Paradoxon

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jonathan.W
User
Beiträge: 1
Registriert: Samstag 17. Februar 2024, 12:56

Hallo,
Ich fange gerade an mit Python und probiere das infinite Money Paradoxon zu programmieren welches ich auf yt gesehen habe und bräuchte Hilfe

Infinite Money Paradoxon:
Eine Münze wird geworfen, bei Kopf verdoppelt sich der Einsatz und bei Zahl ist es vorbei und man behält seinen gesetzten Betrag.

Ich will eine Simulation machen mit 1000 Würfen und am Ende wissen was der Durchschnitts Gewinn ist dafür habe ich einen String hinzugefügt zu dem die Ergebnisse addiert werden um danach den durschnitt errechnen zu lassen.
Allerdings bekomme ich beim ausführen: TypeError: can only concatenate str (not "int") to str

Hier ist meinCode ich würde mich über Hilfe und Verbesserungs Vorschläge freuen Lg

x = 1 #Gesetzter Betrag
z = "" #alle Ergebniss
import random
for i in range(1000):
y = random.randint(1, 2) #Münzwurf
if y == 2:
x = x* 2
else:
z = z + x #Ergebniss soll zu str addiert werden
x = 1
print(z)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@jonathan W: Ich habe aus Versehen den “Spam Vorgang” getriggert, weil englischer Titel & Money… darum ist dein Account gesperrt. Das war natürlich ein Fehler, dafür entschuldige ich mich. Ich fürchte du musst dich nochmal registrieren. Ggf kann Damaskus helfen. Ich leider nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 13241
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Jonathan.W: Die Fehlermeldung sagt ziemlich deutlich was das Problem ist. Was denkst Du denn was das addieren von einem Text und einer Zahl ergeben sollte‽

Sonstige Anmerkungen: Bei Python sind Einrückungen wichtig, darum musst Du den Quelltext im Beitrag in Code-Tags setzen, damit die Einrückung erhalten bleibt in der Anzeige.

Statt Kommentare zu schreiben was `x`, `y`, und `z` bedeuten sollen, sollten die Variablen Namen bekommen die verraten was der Wert bedeutet.

Vor Importen kommt in der Regel nur (jeweils optional) die Shebang-Zeile, und/oder der Kodierungskommentar, und/oder der Modul-Docstring. Damit man möglichst am Anfang schon sieht wovon das Modul abhängt.

Das Ergebnis vom Münzwurf muss man nicht unbedingt an einen Namen binden, denn der Wert wird ja nur an einer Stelle — in der ``if``-Bedingung — verwendet.

Zum Sankt-Petersburg-Paradoxon selbst: Das ist komisch bis falsch implementiert, weil die Implementierung das auf 1.000 Münzwürfe beschränkt, also nicht 1.000 mal spielt, sondern wie viel Spiele auch immer innerhalb von 1.000 Würfen gespielt werden. Das können ja jedes mal unterschiedlich viele sein. Und am Ende dann eines das nicht zu ende gespielt wurde. Wenn man den Durchschnittsgewinn davon wissen möchte, müsste man auch mitzählen wie viele Spiele es denn waren. Sinnvoller wäre es das Spiel 1.000 mal zu spielen, also eine feste Anzahl von Spielen zu absolvieren.

Mal spasseshalber in Commodore BASIC V2:

Code: Alles auswählen

LIST

10 N=1000:W=0:ZZ=RND(-TI)
20 FOR I=1 TO N
30 M=1
40 C=RND(1)<0.5
50 IF C THEN M=M*2:GOTO 40
60 W=W+M
70 NEXT
80 PRINT W/N
READY.
RUN
 6.46

READY.
RUN
 4.924

READY.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antworten