Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. 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
Programátor Basic:3.10.2020 14:06

Dobrý den.
Potřeboval bych poradit s vytvořením náhodného generátoru čísel v jazyce C++ ve Visual Studio 2019 net.framework.

Zkusil jsem: Zkoušel jsem vytvořit náhodný generátor:
srand ((unsigned int)time(NULL));
int randomNumber1 = rand() % 100;
label2->Text = System::Conver­t::ToString(ran­domNumber1);
Akorát tento způsob generování čísel je pravidelný(když vytvořím druhý generátor tak když je spustím na jednou vypadne z nich stejné číslo). A to právě nechci.

Chci docílit: Potřebuju vytvořit generátor kdy vždycky vypadne jiné číslo i když je dva spustím na jednou.
Děkuji za případné rady a nápady.

 
Odpovědět
3.10.2020 14:06
Avatar
Odpovídá na Programátor Basic
Patrik Valkovič:3.10.2020 14:27

funkci srand zavolej jen jednou na začátku programu. Potom po každém volání rand() vypadne jiné číslo.

Nahoru Odpovědět
3.10.2020 14:27
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Programátor Basic:3.10.2020 17:37

Díky moc funguje to. :)

 
Nahoru Odpovědět
3.10.2020 17:37
Avatar
Caster
Člen
Avatar
Odpovídá na Programátor Basic
Caster:4.10.2020 0:41

Generátor nastavíš do výchozí polohy příkazem seed(parametr).

Kdyby jsi chtěl jít hlouběji, tak generovat náhodná čísla umí i sám Intel procesor. Příklad v x64 asm ve Visual Studiu 2017:

RdRand100 PROC
        DB 048h, 0fh, 0c7h, 0f2h        ; RDRAND RDX
        mov rax, rdx                    ; 64 bit náhodné číslo je v RDX
        xor rdx, rdx
        mov r11, 100
        div r11                         ; Podělíme RDX:RAX 100
        inc rdx                         ; Přičteme jedničku, abychom ošetřili stav když je zbytek po dělení = 0
        mov rax, rdx                    ; Zbytek po dělení (číslo 1-100) do RAX
        ret
RdRand100 ENDP
 
Nahoru Odpovědět
4.10.2020 0:41
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.