Wątpliwości losowanie liczb.
Ostatnio zmodyfikowano 2013-04-06 23:53
miloszimazik Temat założony przez niniejszego użytkownika |
Wątpliwości losowanie liczb. » 2013-04-02 17:57:13 Witam, Mam problem z losowaniem liczb mianowicie w kursie przeczytałem ,że jeśli wpiszę int wylosowana_liczba =( rand() % 50 ) + 7; to powinienem dostać liczby z zakresu 7-56. Niestety nie rozumiem na jakiej zasadzie to działa i jakie powinienem wpisać jeśli chcę obliczyć dla np przedziału 4-10.
Pozdrawiam Miłosz |
|
ShadowkhaN |
» 2013-04-02 18:07:27 Dla przedzialu 4-10 piszesz tak ( rand() % 6 ) + 4, losuje Ci liczbe od 0 do 6, pozniej dodaje 4, czyli np tutaj ( rand() % 6 ) wylosuje sobie 5 to jeszcze doda 4 , czyli 9 :) |
|
Monika90 |
» 2013-04-02 19:45:18 Dla przedzialu 4-10 piszesz tak ( rand() % 6 ) + 4, |
To losuje liczbę z przedzału [0, 9] i do tego słabej jakości. Lepiej: #include <random> #include <ctime>
std::default_random_engine urng( std::time( 0 ) ); std::uniform_int_distribution < int > d( 4, 10 ); std::cout << d( urng );
Jedyny problem, to jak zainicjalizować generator, zrobienie tego dobrze i zarazem przenośnie, jest trudne albo i nie możliwe. Można spróbować tego: #include <chrono> std::default_random_engine urng( std::chrono::high_resolution_clock::now().time_since_epoch().count() );
albo tego: std::default_random_engine urng( std::random_device { }() );
|
|
Forczek |
» 2013-04-02 21:38:49 Przypominam, zakładający post pytał na jakiej zasadzie to działa bo nie rozumie tej lekcji. A wy podajecie mu od razu rozwiązany problem losowania liczb z danego zakresu. Bez rzadnego wytłumaczenia i podajesz jeszcze inny sposób nie związany z tematem. Pewnie nie zrozumiały dla początkującego. Czytanie ze zrozumieniem. |
|
ShadowkhaN |
» 2013-04-02 21:42:23 "Rzadnego" sorry, ale zainwestuj w słownik :O |
|
SeaMonster131 |
» 2013-04-02 21:58:26 int liczba = rand() % 6 + 4
To tak, jakbyś sobie napisał: int liczba; liczba = rand() % 6; liczba += 4;
|
|
miloszimazik Temat założony przez niniejszego użytkownika |
» 2013-04-06 23:53:02 Dziękuje wszystkim za odpowiedzi, już wszystko rozumiem :) |
|
« 1 » |