Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wątpliwości losowanie liczb.

Ostatnio zmodyfikowano 2013-04-06 23:53
Autor Wiadomość
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
P-79797
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 :)
P-79798
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:
C/C++
#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:
C/C++
#include <chrono>
std::default_random_engine urng( std::chrono::high_resolution_clock::now().time_since_epoch().count() );

albo tego:
C/C++
std::default_random_engine urng( std::random_device { }() );
P-79803
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.
P-79823
ShadowkhaN
» 2013-04-02 21:42:23
"Rzadnego" sorry, ale zainwestuj w słownik :O
P-79827
SeaMonster131
» 2013-04-02 21:58:26
C/C++
int liczba = rand() % 6 + 4
To tak, jakbyś sobie napisał:
C/C++
int liczba;
liczba = rand() % 6; // losowanie 0-5
liczba += 4; // do wylosowanej wartosci dodaj 4
P-79829
miloszimazik
Temat założony przez niniejszego użytkownika
» 2013-04-06 23:53:02
Dziękuje wszystkim za odpowiedzi, już wszystko rozumiem :)
P-80119
« 1 »
  Strona 1 z 1