Mam taką funkcję w Java:
Math.floor(Math.random()*1000)
I tu jest pytanie jak ją zastąpić w cpp (chodzi o random). Taki kod zawiesza mi program:
floor(rand()*1000)
Dzięki za odpowiedź ;)
Mam taką funkcję w Java:
Math.floor(Math.random()*1000)
I tu jest pytanie jak ją zastąpić w cpp (chodzi o random). Taki kod zawiesza mi program:
floor(rand()*1000)
Dzięki za odpowiedź ;)
Pomijając słabość rand()
, co rozumiesz przez "zawiesza program"?
Wykonywanie nie chce się zakończyć. Bez tej funkcji obliczenia wykonują się kilka dziesiątych sekundy a jak ją odkoduje to program się nie kończy
W sumie to co robisz to technicznie UB. Spróbuj użyć uniform_int_distribution
zamiast bawić się technologią sprzed pół wieku.
Pewnie głupie pytanie ale jak tego użyć?
No, było w podlinkowanym materiale.
thread_local std::mt19937 gen{std::random_device{}()};
template<typename T>
T random(T min, T max) {
return std::uniform_int_distribution<T>{min, max}(gen);
}
kq napisał(a):
No, było w podlinkowanym materiale.
Sorry nie zauważyłem linka
A żeby zwracało liczby (double) z (0.0 ,1.0)?
uniform_real_distribution
, również jest opisane.
Mam jeszcze jedno pytanie w jaki sposób nie wypisywać bardzo małych wyników (mam liczby typu double ale nie chcę tych z +/- liczba "e-015" )?
Mattii4211 napisał(a):
Mam jeszcze jedno pytanie w jaki sposób nie wypisywać bardzo małych wyników (mam liczby typu double ale nie chcę tych z +/- liczba "e-015" )?
Czy chodzi Ci o setprecision albo o notacje? Może ten link pomoże.
Dzięki mniej więcej o to chodziło :)