Möglicherweise möchten Sie ein bestimmtes Array mit einem geeigneten Wert füllen. Oder Sie möchten einen zufälligen Wert für Ihre Testdaten erstellen. Hier sind einige Tipps, die Sie in solchen Fällen verwenden können.
Rand () / rand_r () wird als Funktion zum Generieren von Zufallszahlen bereitgestellt.
#include <stdlib.h>
int rand(void);
int rand_r(unsigned int *seedp);
Die obige Funktion verwendet jedoch Zufallszahlen zwischen 0 und RAND_MAX ** (* 1) **. Wenn Sie also Zufallszahlen von 0 bis UCHAR_MAX (255) generieren möchten, können Sie diese nicht so verwenden, wie sie sind. ..
** (* 1) ** In meiner Umgebung wurde es in stdlib.h
wie folgt definiert
/* The largest number rand will return (same as INT_MAX). */
#define RAND_MAX 2147483647
Wenn Sie die folgende Wrapper-Funktion vorbereiten, können Sie den Bereich des Minimal- / Maximalwerts (0 bis RAND_MAX) angeben.
#include <stdlib.h>
int getrand(unsigned int* seed, int min, int max)
{
return min + (int)(rand_r(seed) * (max - min + 1.0) / (1.0 + RAND_MAX));
}
DEMO
Unten finden Sie ein einfaches Beispielprogramm. Bitte benutzen Sie es, um den Betrieb zu überprüfen.
https://github.com/ydah/specified_range_rand_r
Recommended Posts