münzwurf < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
hallo zusammen,
ich soll ein programm schreiben das einen münzwurf simuliert. dabei soll die ziffer 0 für kopf, die ziffer 1 für zahl stehen?
wie muss ich da vorgehen? danke
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:30 Do 25.03.2010 | Autor: | itse |
Hallo martina.m18,
für einen Münzwurf gibt es nur zwei Zustände Kopf oder Zahl, so wie ihr das schon definiert habt: 0 = kopf und 1 = zahl.
Nun soll das Ganze zufällig erzeugt werden, somit müsste man sich Gedanken darüber machen, wie man Zufallszahlen erzeugt.
Es gibt die Funktion rand(), mit dieser lassen sich Zufallszahlen zwischen 0 und 32767 erzeugen. Jedoch benötigst du nur 0 oder 1, somit besteht noch eine Schwierigkeit darin, es auf diesen Wertebereich einzuschränken.
Ich habe dazu einen schönen Artikel gefunden, der das Thema erklärt samt Codebeispielen: C-Plus-Plus-Forum.
Gruß
itse
|
|
|
|
|
hallo,
vielen dank
gruss
matina
|
|
|
|
|
Hallo!
Vorsicht! Da ist ein kleiner Bug drin!
Die Funktion rand() liefert in C/C++ Zahlen von 0 bis INT_MAX, wobei INT_MAX auch noch von der Architektur des Rechners abhängt. Gewöhnlich haben integer-Zahlen 32 Bit, also 31Bit plus Vorzeichen, dann ist INT_MAX=2.147.483.647 (Warum die stets positiven Zufallszahlen nur den positiven Bereich eines vorzeichenbehafteten Datentyps abbilden? Vermutlich, weil die meisten Leute immer nur 'int's nehmen, und keine 'unsigned int's)
Generell wird per #define der Wert RAND_MAX innerhalb der stdlib - welche auch rand() enthält - definiert, und man sollte lieber das anstatt fester Zahlen benutzen.
Am schnellsten bekommt man Zahlen im Bereich {0,1,...,(n-1)} durch rand()%n .
|
|
|
|