#46 Standardbibliothek - Zufallszahlen Flashcards

1
Q

Was sind Zufallszahlen und wofür werden sie in der Informatik genutzt?

A

Zufallszahlen sind eine Folge von Zahlen mit zufälligem Wert.

Anwendungsbereiche für Zufallszahlen:
- Kryptographie (Schlüsselerzeugung)
- Simulation
- Stichproben (Auswahl aus großer Datenmenge)
- Entscheidungsfindung (z.B. bei Computerspielen)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was sind die Probleme bei Zufallszahlen?

A

Computer arbeiten deterministisch, deswegen können keine Zufallszahlen erzeugt werden.
Es können nur Pseudozufallszahlen erzeugt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche Eigenschaften sollen bei Pseudozufallszahlen erfüllt sein?

A

Pseudozufallszahlen sollen
- gleichmäßig verteilt sein
- sich möglichst lange nicht wiederholen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

nenne ein einfaches Verfahren für Zufallszahlen von 0 bis m-1.

A

Methode der linearen
Kongruenz (Lehmer, 1951)

a[0] = seed;
for(i = 1; i < n; i++)
a[i] = (a[i-1] * b + 1) % m;

  • Güte abhängig von b und m
  • Für Kryptographie nicht geeignet, da mit geeigneten Analysemethoden
    Parameter aus Zufallsfolge berechenbar und somit vorhersagbar
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche Bibliotheksfunktionen für Zufallszahlen gibt es?

A

Funktionen in stdlib.h
- int rand(): liefert eine Zufallszahl zwischen 0 und der Konstanten RAND_MAX
- void srand(unsigned int seed): Initialisierung der Zufallszahlenfolge
- Die time-Funktion ist hilfreich, um bei jedem Programmaufruf einen anderen
Startwert für den Zufallsgenerator zu setzen.

Beispiel: Erzeuge ganzzahlige Zufallszahlen im Intervall [1, 6]
#include <stdlib.h>
#include <time.h>
...
srand((unsigned) time(NULL));
...
z1 = 1 + rand() % 6;
z2 = 1 + rand() % 6;</time.h></stdlib.h>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly