Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Filip
Člen
Avatar
Filip:10.3.2018 23:51

Ahoj. Mam interval, kde <a;b>. Ale nevim si rady, jak predat tento zapis funkci rand(); Poradi mi prosim nekdo? Děkuji

 
Odpovědět
10.3.2018 23:51
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Filip
DarkCoder:11.3.2018 1:51

Interval jako takový předat funkci rand() přímo nemůžeš, ale funkci rand() můžeš použít k vytvoření vlastní funkce nebo makra s parametry. Prototyp vytvořené funkce může být např. následující:

int range(int a, int b);

Funkce rand() vrací pseudonáhodné číslo v rozsahu 0 až RAND_MAX.

Použitím operátoru modulo (%) omezíš rozsah na 0 až n-1.

rand() % n

Pro interval <a;b> po úpravách (posunu rozsahu)

(rand() % (b - a + 1)) + a

Je ale třeba mít stále namysli platný rozsah hodnot funkce rand().

Editováno 11.3.2018 1:52
Nahoru Odpovědět
11.3.2018 1:51
"Chceš-li předávat své znalosti, měj kvalitní podklady."
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Filip
Člen
Avatar
Filip:11.3.2018 11:43

Děkuji, funguje to :) Když tento postup aplikuji i na realna čisla, tak mi to např. z intervalu <10;20>, generuje čislo jako 20.11, 20.9 atd., je to v pořádku? Jelikož si nejsem jisty, jestli ten interval neříká, že tam může být 20, ale nikoli 20.1 atp. ?
Diky

 
Nahoru Odpovědět
11.3.2018 11:43
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Filip
DarkCoder:11.3.2018 13:16

Operátor modulo pracuje správně pouze s celočíselnými operandy a tudíž je funkce provádějící generování pseudonáhodného čísla v daném intervalu omezena na celá čísla. Pro reálná čísla lze funkci volat znovu tentokrát v rozsahu <0-999>. Toto druhé volání představuje desetinnou část čísla s přesností na 3 desetinná čísla, což obvykle bývá pro většinu aplikací dostačující. Násobným voláním funkce v rozsahu <0-999> můžeme získávat vyšší přesnost reálných čísel.

Nahoru Odpovědět
11.3.2018 13:16
"Chceš-li předávat své znalosti, měj kvalitní podklady."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.