Mam tu gdzieś błąd lecz nie potrafię go znaleźć, może ktoś mi wyjaśni co źle robię?
Losowanie liczby z zakresu.
const double D = 2.99, G = 9.99;
double cena;
srand (time(0));
cena = D + rand( )%(D+1-G);
Mam tu gdzieś błąd lecz nie potrafię go znaleźć, może ktoś mi wyjaśni co źle robię?
Losowanie liczby z zakresu.
const double D = 2.99, G = 9.99;
double cena;
srand (time(0));
cena = D + rand( )%(D+1-G);
Problem z nazewnictwem zmiennych więc nie widzisz co czynisz.
srand(time(0)); // musi być tylko raz na początku main
const double MinPrice=2.99,MaxPrice=9.99;
double Price=MinPrice+rand()%(MaxPrice+1-MinPrice);
#include <iostream>
#include <ctime>
#include <random>
#include <iomanip>
using namespace std;
int main()
{
constexpr int first=2, last=10;
std::random_device rd;
std::default_random_engine engine(rd());
std::uniform_real_distribution<double> dist(first,last);
for(int i=log10(0.1);++i<last;cout<<setprecision(3)<<dist(engine)<<"\n"){}
return 0;
}
Jak według ciebie działa operator%
dla liczb zmiennoprzecinkowych?
zresztą kompilator bardzo jasno mówi w czym problem: https://godbolt.org/z/nMo8GYEbK
@bifed85954:
Rozwiązanie podane przez @OfEl jest dobre, ale jeśli z jakiegoś powodu upierasz się przy pisaniu tego z użyciem rand() to zrób tak