Kezdőoldal » Számítástechnika » Programozás » Hogy tudok random számot...

Hogy tudok random számot generálni c++ban ilyen módon?

Figyelt kérdés

Találtam egy random engine-t, ezt a biztos mt19337 engine-t.


A kérdésem az, ha egy osztálynak van egy függvénye, ami számít generál akkor, ha így csinálom:


int Dice::Rolling(){

mt19337 generator(time(0));

uniform _int_generator<int>Dice roll(1,6);


int roll = Dice roll(generator);


return roll;

}


Észrevettem, hogy akárhányszor meghívom ezt a függvénye mindig ugyanaz okay a számokat generál.


Talán azért, mert az mt19337 az mindig meghívódik. Viszont azt nem tehetem, hogy máshol hívom még, mert akkor kiírja, hogy a generator nincs deklarálva. Az osztály headerben, ha deklarálom adattagként akkor, ha így csinálom:


class Dice{

......


mt19337 generator(time(0));


......

}


Akkor olyan hibáztatni dob ki, amit nemtudok értelmezni. Majd mindjárt leírom azt is.


Szerintetek mi a megoldás?



#C++ #rabdom szám
2016. szept. 2. 08:42
 1/3 anonim ***** válasza:

Itt inkább alapvető C++-os hiányosságok vannak szerintem.

A függvénykönyvtárat nem ismerem, de elég furcsa nekem ez a kód, nem is értem hogyan fordul le.

Ez például micsoda?

int roll = Dice roll(generator);


Egyébként egyszerű kockadobások generálásához miért nem elég egy sima C-s rand() ?

2016. szept. 2. 09:38
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Valami ilyesmi:


int Dice::Rolling(){

static mt19337 generator(random_device{}());

uniform_int_distribution<int> Dice(1,6);


return Dice(generator);

}


Nem thread-safe, ha azzá akarod tenni egyszerűen, akkor static mellé mehet a thread_local.

2016. szept. 2. 17:16
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Ok, köszönöm.
2016. szept. 2. 17:52

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!