random c++

0

Niedawno zacząłem naukę c++, przedtem programowałem w pascalu. Pascal posiadał bardzo wygodną komendę losowania:

randomize;
a:=random(10);

c++ posiada jakieś głupie komendy jeśli chodzi o losowanie, co do randomize to:
srand(time(NULL));

a do samego random
int wylosowana_liczba =( rand() % 50 ) + 7;

moje pytanie jest takie, czy można to jakoś łatwo zapisać jak w pascalu ?
Random to bardzo ważna komenda, a zagłębiając się w c++ mam wrażenie że powinienem wrócić do pascala.

0

Spoiler: teraz znienawidzisz C++.

Proszę: http://en.cppreference.com/w/cpp/numeric/random

auto random = std::bind(std::uniform_int_distribution<>(min, max), std::mt19937(time(nullptr)));

Działa to tak: http://ideone.com/vP6mp

0
void randomize() { srand(time(0)); }
unsigned random(unsigned n) { return rand()%n; }
double random() { return rand()/(MAX_RAND+1.0); }

... i już masz jak w pascalu.

0

Randomize robi dokładnie to samo co srand(time(NULL));. Jeśli chcesz lepiej (może nie do końca prościej) to masz C++11:

std::mt19937 engine(time(nullptr));
std::uniform_int_distribution<int> distribution(0, 10);
auto random = std::bind(distribution, engine);

Od teraz wywołanie random() wylosuje ci liczbę od 0 do 10 wg rozkładu jednorodnego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1