Zufallsgenerator in c++

Prediger

Grünschnabel
Ich habe eine Belegarbeit in Mathe zu erledigen, in der ich eine Folge von 0 und 1 erzeugen soll.
Ich bin an der Überlegeung dieses Problem mit der Funktion rand() zu lösen.
Die Frage ist, wie sage ich dem Zufallsgenerator, das die Zahlen nur aus 0 und 1 bestehen. Und wie rufe ich den Generator auf, dass ich eine Folge von 1 - 1000 erzeugen kann.
Ich würde mich über die lösung dieses Problems freuen.

Christian
 
Hi,
die Funktion rand() gibt eine ganze Zahl zurück die entsprechend im
Wertebereich eines Integers liegt =>
Teile das Ergebniss der rand() Funktion durch den größtmöglichste ganze Zahl(int)
caste einen der beiden Parameters deiner Division in einen Gleitkommazhal, runde
ihn anschliessend und du bekommst eine 0 oder 1.
Das machst du n mal und speicherst es in ein integer Feld der Größe n und
fertig ist deine Folge der Größe n aus zufälligen nullen und einsen.


Gruß

RedWIng
 
Das fände ich etwas übertrieben, RedWing... Ich würd's halt einfach so machen:
Code:
char cRandom;
cRandom = rand() & 0x01;
// oder:
cRandom = rand() % 2;
1. Einfacher
2. Schneller
3. Kürzer! ;)
 
vor dem ersten Aufruf von rand() solltest du srand() aufrufen, um eine wechselnde Folge von Zufallszahlen zu erhalten.
Wenn du srand() nicht aufrufst, erhältst du iimer die gleiche Folge an Zufallszahlen.
Am besten ist es srand() mit der aktuellen Zeit aufzurufen, um den Zufallszahlengenerator mit einer variablen Zahl zu initialisieren.
 
Matthias Reitinger hat gesagt.:
Das fände ich etwas übertrieben, RedWing... Ich würd's halt einfach so machen:
Code:
char cRandom;
cRandom = rand() & 0x01;
// oder:
cRandom = rand() % 2;
1. Einfacher
2. Schneller
3. Kürzer! ;)

Wie wahr :)

Gruß

RedWing
 
Hallo.

Hier ist mal ein Beispiel für einen Zufallsgenerator der Zahlen zwischen 0 und 1 erzeugt und auf dem Bildschirm ausgibt.

Gruß, Thomas.


Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{ 
int i,z,anzahl=100;
printf("Die 100 Zufahlszahlen lauten:\n");
printf("*********************************************\n");
srand( (unsigned)time( NULL ) ); /*Initialisierung mit der Systemzeit*/
for( i = 0; i < anzahl;i++ )			 
{
z=rand()%2;	 //Umrechnen der Zahlen
printf( " %6d\n", z);
}
printf("\n\n");
return 0;
}
 
Zuletzt bearbeitet:
Zurück