004
07.01.2007, 11:08 Uhr
Suba Esel
|
@ 0xdeadbeef:
Zitat: |
Bzw. in C++
C++: |
#include <cstdlib> #include <ctime> #include <iostream>
int main() { std::srand(std::time(0));
std::cout << std::rand() % 11 << std::endl; }
|
|
Srand, rand und time() werden bereits in iostream definiert, du musst cstdlib und ctime nicht mit einbinden
Sowohl srand, rand und time benötigen kein std::
Hast Recht, es muss natürlich rand()%11 sein
Außerdem:
Zitat: |
Übrigens, rand() erstellt Zufallswerte zwischen 0 und RAND_MAX. RAND_MAX ist in stdlib.h definiert, und liegt auf heutigen Maschinen in aller Regel bei INT_MAX, bzw. 2 Milliarden und ein bisschen.
|
RAND_MAX liegt bei mir bei 32767.
@ MartinF: rand()%11 ist die allereinfachste Version einer Pseudo-zufallszahl, die leider dafür sorgt, dass die Zahlen nicht ganz gleichmäßig verteilt sind. rand() rechnet einfach eine Zahl zwischen (bei mir) 0 und 32767 aus. Um nun auf kleinere Zahlen zu kommen, benutzt man den Modulo - Operator (%), der dir den Rest einer Gleichung zurückgibt. 20%6 ergibt 2, weil 20/6 3 Rest 2 ergibt. Der Rest einer Division muss natürlich kleiner sein als der Nenner, deshalb rand()%11. ABER: Der Rest kann auch 0 sein! Warum dann einige Zahlen häufiger drankommen als andere, hat mir noch nie eingeleuchtet, ist aber so. -- Simon Dieser Post wurde am 07.01.2007 um 11:13 Uhr von Suba Esel editiert. |