Sie sollten srand() aufrufen, bevor Sie rand aufrufen, um den Zufallsgenerator zu initialisieren.
Entweder es mit einem bestimmten Samen nennen, und Sie erhalten die gleiche Pseudozufallsfolge
#include <stdlib.h>
int main()
{
srand (123);
int random_number = rand();
return 0;
}
oder rufen Sie es mit einer sich verändernden Quellen, dh die Zeitfunktion
#include <stdlib.h>
#include <time.h>
int main()
{
srand (time(NULL));
int random_number = rand();
return 0;
}
immer erhalten Als Antwort auf Moons Kommentar rand() generiert eine Zufallszahl mit einer gleichen Wahrscheinlichkeit zwischen 0 und RAND_MAX (ein Makro in stdlib.h vordefiniert)
Sie können diesen Wert dann einem kleineren Bereich zuordnen, z.
int random_value = rand(); //between 0 and RAND_MAX
//you can mod the result
int N = 33;
int rand_capped = random_value % N; //between 0 and 32
int S = 50;
int rand_range = rand_capped + S; //between 50 and 82
//you can convert it to a float
float unit_random = random_value/(float) RAND_MAX; //between 0 and 1 (floating point)
Dies könnte für die meisten Anwendungen ausreichend sein, aber es ist darauf hinzuweisen, dass im ersten Fall die Bedienungsperson eine leichte mod Bias führt zu verwenden, wenn N teilt sich nicht gleichmäßig in RAND_MAX + 1.
Zufallszahlengeneratoren sind interessant und komplex, es wird weithin gesagt, dass der Rand() Generator in der C-Standard-Bibliothek keine große Qualität Zufallszahlengenerator ist, lesen (http://en.wikipedia.org/wiki/Random_number_generation für eine Definition von Qualität).
http://en.wikipedia.org/wiki/Mersenne_twister (source http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html) ist eine beliebte hochwertige Zufallszahlengenerator.
Auch ich bin nicht bekannt arc4rand() oder random(), also kann ich nicht kommentieren.
versuchen Sie 'rand() * 10' – deostroll