Generowanie jednolitego rozkładu INTEGERS w C
Napisałem funkcję C, którą myślę, że wybieraliczby całkowite odrównomierna dystrybucja z zakresem [rangeLow, rangeHigh], włącznie. To nie jest praca domowa - używam tego tylko w niektórych systemach wbudowanych majsterkujących, że robię to dla zabawy.
W moich przypadkach testowych ten kod wydaje się zapewniać odpowiednią dystrybucję. Nie jestem jednak w pełni przekonany, że wdrożenie jest poprawne. Czy ktoś może sprawdzić stan zdrowia psychicznego i dać mi znać, jeśli zrobiłem coś złego tutaj?
//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. Szukałem innych takich pytań. Trudno jednak odfiltrować mały podzbiór pytań, które omawiają losowe liczby całkowite zamiast losowych liczb zmiennoprzecinkowych.