Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ ja satunnaisluku

Shark90 [22.10.2009 13:28:43]

#

Yllättävän vaikeaa on saada C++:lla oikeasti satunnaisia lukuja.

Tarvitsisin alkuun ihan vain oikeasti satunnaisesti (siis ei toistuvaa järjestystä) koodin joka arpoisi vaikka vain arvoja 1 ja 2 satunnaisessa järjestyksessä.

Käytän koodissani SDL:ää, siinä ei taida olla mitään valmiita funktioita moiseen?

Grez [22.10.2009 14:04:31]

#

Jos alustat satunnaisgeneraattorin vaikka ajalla ennen sen rand() kutsumista, niin toimii luultavasti riittävän hyvin.

std::srand(std::time(0));

//tehdään sata satunnaislukua
int satunnaisluvut[100];
for (int i = 0; i<100; i++) {
  satunnaisluvut[i] = std::rand();
}

Jos tuo ei riitä, niin käyttöjärjestelmästä riippuen saattaa löytyä oikeaakin satunnaisuutta. Esim. Linux kerää laitteistosta satunnaista tavaraa ja täyttää sillä entropia-allasta josta voi sitten satunnaisuutta jonkin verran ammentaa.

Jos nämä ei riitä, niin sitten voit hankkia http://www.araneus.fi/products-alea-eng.html

jlaire [22.10.2009 15:56:20]

#

Lisätään vielä, että vain arvoja 1 ja 2 saa näin:

int yks_tai_kaks = std::rand() % 2 + 1;

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta