Funkcja w cpp

M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

Mam taką funkcję w Java:

Kopiuj
Math.floor(Math.random()*1000)

I tu jest pytanie jak ją zastąpić w cpp (chodzi o random). Taki kod zawiesza mi program:

Kopiuj
floor(rand()*1000)

Dzięki za odpowiedź ;)

edytowany 2x, ostatnio: kq
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:5 dni
  • Lokalizacja:Szczecin
1

Pomijając słabość rand(), co rozumiesz przez "zawiesza program"?


Azarien
może rand nie nadaje się do kryptografii, ale jest wystarczająco dobre w większości zastosowań.
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

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

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:5 dni
  • Lokalizacja:Szczecin
2

W sumie to co robisz to technicznie UB. Spróbuj użyć uniform_int_distribution zamiast bawić się technologią sprzed pół wieku.


M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

Pewnie głupie pytanie ale jak tego użyć?

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:5 dni
  • Lokalizacja:Szczecin
2

No, było w podlinkowanym materiale.

Kopiuj
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);
}

M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0
kq napisał(a):

No, było w podlinkowanym materiale.

Sorry nie zauważyłem linka

M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

A żeby zwracało liczby (double) z (0.0 ,1.0)?

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:5 dni
  • Lokalizacja:Szczecin
0

uniform_real_distribution, również jest opisane.


M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

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" )?

DI
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:5
0
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.

edytowany 3x, ostatnio: dixtel
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

Dzięki mniej więcej o to chodziło :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.