Seite 1 von 1
zufalls zahlen
Verfasst: Do Feb 12, 2009 8:20 pm
von G_loW
hi leute,
weis wer was die einfachste form ist zufallszahlen zwichen 1 und 20 zu generieren? (ohne nachkommastelle)
mfg G_loW

Re: zufalls zahlen
Verfasst: Do Feb 12, 2009 8:27 pm
von cloidnerux
Code: Alles auswählen
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
void main()
{time_t start; //Speichert aktuelle Zeit als int
srand(start); //legt Startwert für Randombefehl fest
int wert = (rand() % 100)+1; //wert zw.1 u 100
}
Es ist die Funktion rand().
Alles davor sorgt nur dafür das alles seine Richtigkeit hat.
Es wird die Aktuelle zeit Abgefragt und als Startwert für dei Zufalszahlen verwendet.
So wird verhindert, das bei jedem start die selben Zufallszahlen kommen.
Re: zufalls zahlen
Verfasst: Do Feb 12, 2009 8:34 pm
von Dubbel
srand(time(0)); sagt dem Computer, dass er sich die Zufallszahl anhand der Zeit ausdenken soll, da Computer ja nicht kreativ sind, also einen Bezugspunkt für die Errechnung des Zufallswertes haben müssen.
rand()%19; erzeugt eine zufällige Zahl zwischen 0 und 19. Nun rechnet man diese +1, da du ja eine Zwischen 1 und 20 haben wolltest.
Würden wir rand()%20; schreiben, dann wäre die Zufallszahl zwischen 0 und 20, deshalb das +1.
Jedenfalls hab ich das immer so gemacht (in C bin ich ja eher nicht so der Profi ^^)
Edit1: Achja: Du musst die time.h einbinden ( #include <time.h> )
Edit2: Jetzt war cloidnerux schneller - egal ^^
Edit3: Mich wundert es, dass das nicht im Wiki steht (habs jedenfalls nicht gefunden).
Re: zufalls zahlen
Verfasst: Do Feb 12, 2009 8:41 pm
von G_loW
danke für dei schnelle antwort
hat mir sehr geholfen
Re: zufalls zahlen
Verfasst: Fr Feb 13, 2009 4:31 am
von Kerli
Dubbel hat geschrieben:
rand()%19; erzeugt eine zufällige Zahl zwischen 0 und 19.
Nein, hier muss man aufpassen. Der Modulooperator liefert den Rest der Ganzzahldivision der linken durch die rechte Zahl. Wenn wir jetzt also durch 19 dividieren dann kann der ganzzahlige Rest natürlich maximal 18 sein, da sich eine Division durch 19 genau ausgeht und deshalb auch 0 Rest bleibt.
Für eine Zufallszahl zwischen 1 und 20 müsste man also folgenden Code verwenden:
Das in den vorigen Posts erwähnet 'srand' musst du nicht jedes mal aufrufen, da es nur dazu dient den internen Zufallszahlengenerator mit einem gewissen Startwert zu initialisieren.
Dubbel hat geschrieben:Edit3: Mich wundert es, dass das nicht im Wiki steht (habs jedenfalls nicht gefunden).
Stimmt. Ich habs mir einmal in die Howto-Liste geschrieben.