Nicht-deterministische Auswertungen in C
Beispiel Mehrere verschiedene rand-Ergebnisses
Wir können nun auch mehrere verschiedene Ergebnisse beim Aufruf der Funktion ›rand‹ erkennen.
main.c
#include <stdio.h>
#include <stdlib.h>
int main( void )
{ printf( "%d\n", rand() );
printf( "%d\n", rand() ); }
- Protokoll
41
18467
Wenn man mehrere Zufallszahlen in einem Programm erzeugt, dann sieht man, daß nicht immer die gleiche Zahl erscheint.
main.c
#include <stdio.h>
#include <stdlib.h>
int main( void )
{ printf( "%d\n", rand() );
printf( "%d\n", rand() );
printf( "%d\n", rand() ); }
stdout
41
18467
6334
Wird dasselbe Programm erneut gestartet, so erscheint wieder dieselbe Zahlenfolge.
stdout
41
18467
6334
Welche Zahlenfolge erscheint, ist aber nicht durch C festgelegt, sondern hängt von der verwendeten C -Implementation ab.
Übungsfragen
? Ausdrücke lesen (1)
Was ist der Argumentausdruck in dem Aufrufausdruck »floor( 3. * rand() /( 1. + RAND_MAX ))«?
Welche Werte kann dieser Argumentausdruck haben?
Welche Werte kann der Aufrufausdruck »floor( 3. * rand() /( 1. + RAND_MAX ))« haben?
Sind diese Wert alle gleich wahrscheinlich? *