Portál AbcLinuxu, 12. května 2025 05:06
int X() { srand(time(NULL)); int i = rand() % 5; return i; } int main() { for(int i = 0; i < 20; i++) std::cout << X() << std::endl; return 0; }Pokud toto zkompiluji a spustim tak mi vytiskne 20x stejne cislo. Delsi dobu mi to vrtalo v hlave az jsem prisel na banalni vec - premistit inicializaci generovace do main() a pak uz mi haze seznam 20 nahodnych cisel (v rozsahu, kterem chci). Ja bych se spise chtel zeptat, proc se to takto deje?
... ) { std::cout << X() << std::endl; sleep(1); }
int random_int(int min, int max){ /*returns random number from min to max (INCLUDING MIN AND MAX)*/ int diffp1 = max - min + 1; /*difference plus one */ int bucket_size = RAND_MAX/diffp1; int a; do{ a = rand() / bucket_size; }while (a >= diffp1); return a + min; }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.