Zufallszahlen?
-
Hy.
Habe hier erst nen Thread aufgemacht. Also bin mit meinen Kenntnissen immernoch am aufbauenHabe da noch ein Problem mit Zufallszahlen.
Ich habe einen Würfel, der zufällig eine Zahl zwischen 1 und 6 ausspucken soll.
Ich habe dies folgendermaßen umgesetzt. Nur bin ich misstrauisch, ob die Zahlen wirklich zufällig sind. Also das jede Zahl von 1 bis 6 eine gleichhohe Wahrscheinlichkeit hat getroffen zu werden:#include <stdio.h> #include <ctype.h> #include <time.h> #include <stdlib.h> #define rand() (z=z*1194695065+534534, z&0x7fff) #define srand(s) z=s #define WURF rand()%6+1 int main(void) { int w; unsigned long int z = 1; srand(time(NULL)); ...
jeder Wurf wird dann später aufgerufen mit...
w = WURF;
Ich hoffe Ihr könnt meine Konstruktion nachvollziehen :D.
Dankeschön schonmal im voraus!
-
Wer kommt schon auf die Idee, rand() selber nachzubauen? Nutz' doch einfach die entsprechende(n) Funktion(en) der Standard-Bibliothek (da reicht ein '#include <stdlib.h>' aus). Und falls dir die Werte nicht zufällig genug sind, im Magazin findest du einen Artikel von Marc++us zum Thema Zufallszahlen
-
puh, und die wären? Habe nur das Wissen, was unser Professor uns seit beginn des Semester vorgaugelt
kannst du mir evtl das kurz genauer erläutern?
-
Die heissen schockierenderweise srand() und rand()
-
d.h. ich kann die definitionen einfach weglassen?
brauch ich dann nurnoch
#define WURF rand()%6+1
und
srand(time(NULL));?
hab grad den adrtikel "zufälle gibts" durchgelesen. aber da sind noch echt zu heftige sachen drinnen. das erschlägt mich ein wenig. bin noch echt am anfang halt x)
-
ex.aveal schrieb:
d.h. ich kann die definitionen einfach weglassen?
brauch ich dann nurnoch
#define WURF rand()%6+1
und
srand(time(NULL));Du machst dir - wie CStoll schon anmerkte - nur unnötige Arbeit damit, die bereits als Teil der C Standard Library implementierten Funktionen
srand( )
undrand( )
selbst als Makro zu realisieren.Einfach anwenden:
#include <time.h> // time( ) #include <stdlib.h> // srand( ), rand( ) #include <stdio.h> // printf( ) int main( void ) { unsigned int i; srand( (unsigned) time( 0 ) ); // Zufallszahlengenerator mit der Systemzeit initialisieren. for( i = 0; i < 20; ++i ) { // 20 Mal... printf( "Gewürfelt: %d\n", ( rand( ) % 6 ) + 1 ); } }
greetz, Swordfish