Portál AbcLinuxu, 12. května 2025 10:51

Dotaz: Generovani nahodneho cisla

13.4.2010 18:09 Rogue | skóre: 4
Generovani nahodneho cisla
Přečteno: 421×
Odpovědět | Admin
Dobrý den, chtěl bych od Vás poradit s jedním problémem. Udělal jsem si prográmek na generování náhodných číslel:
  int waitTime = 0;
  srand(time(NULL));
  waitTime = rand()%101;
  printf("%d\n", waitTime);
Problém je, že při generování čísla v relativně bízkém časovém úseku, dostanu stejné hodnoty. Potřeboval bych, aby čísla byla opravdu rozdílná. Díky za odpověď.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.4.2010 18:17 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžete pro seedování použít přesnější gettimeofday() nebo třeba hodnotu načtenou z /dev/urandom. Případně si stav generátoru ukládat do pomocného souboru.
25.4.2010 18:28 thefox | skóre: 25 | Ťapešovo
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Keď by to už riešil čítaním /dev/urandom, tak by mohol vynechať ten proces seedovania a generovania nasledujúceho (pseudo)náhodného čísla. Chcem tým povedať, že sa oplatí buď priamo použiť /dev/urandom (ako pseudonáhodné číslo) alebo naseedovať (len pri spustení programu, určite nie pri každom generovaní nového čísla) hodnotou z /dev/random.
0118 999 881 999 119 725 3
Řešení 1× (krtek007)
25.4.2010 14:36 ApoC
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Odpovědět | | Sbalit | Link | Blokovat | Admin
srand(time(NULL)); volej jen na zacatku programu, ne pri kazdem generovani nahodneho cisla. To je pak jasne, ze se ti budou generovat stejna cisla pokud to zav olas v rozmezi 1s :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.