# Zufallsgenerator in c++



## Prediger (7. Dezember 2004)

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


----------



## RedWing (7. Dezember 2004)

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


----------



## Matthias Reitinger (7. Dezember 2004)

Das fände ich etwas übertrieben, RedWing... Ich würd's halt einfach so machen:

```
char cRandom;
cRandom = rand() & 0x01;
// oder:
cRandom = rand() % 2;
```
1. Einfacher
2. Schneller
3. Kürzer!


----------



## dorado (8. Dezember 2004)

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.


----------



## RedWing (8. Dezember 2004)

Matthias Reitinger hat gesagt.:
			
		

> Das fände ich etwas übertrieben, RedWing... Ich würd's halt einfach so machen:
> 
> ```
> char cRandom;
> ...



Wie wahr 

Gruß

RedWing


----------



## moltomy (9. Dezember 2004)

Hallo.

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

Gruß, Thomas.



```
#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;
}
```


----------

