Generierung einer gleichmäßigen Verteilung von INTEGERS in C

Ich habe eine C-Funktion geschrieben, von der ich denke, dass sie auswähltganze Zahlen von einemgleichmäßige Verteilung mit range [rangeLow, rangeHigh], einschließlich. Dies ist keine Hausaufgabe - ich verwende dies nur in einigen eingebetteten Systemen, die ich zum Spaß bastele.

In meinen Testfällen scheint dieser Code eine angemessene Verteilung zu erzeugen. Ich bin jedoch nicht ganz sicher, dass die Implementierung korrekt ist. Könnte jemand eine Gesundheitsprüfung durchführen und mich wissen lassen, ob ich hier etwas falsch gemacht habe?

//uniform_distribution returns an INTEGER in [rangeLow, rangeHigh], inclusive.
int uniform_distribution(int rangeLow, int rangeHigh)
{
    int myRand = (int)rand(); 
    int range = rangeHigh - rangeLow + 1; //+1 makes it [rangeLow, rangeHigh], inclusive.
    int myRand_scaled = (myRand % range) + rangeLow;
    return myRand_scaled;
}
//note: make sure rand() was already initialized using srand()

P.S. Ich habe nach anderen Fragen wie diesen gesucht. Es war jedoch schwierig, die kleine Teilmenge von Fragen herauszufiltern, die zufällige Ganzzahlen anstelle von zufälligen Gleitkommazahlen behandeln.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage