Losowanie liczb rzeczywistych z określonego przedziału [0, max]

0

Chcę wylosować liczby rzeczywiste z przedziału [0, max]. Poniższy kod daje mi jedynie jakieś dziwne wyniki, w dodatku, to wcale nie są liczby double:/

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

double funkcja(int max)
{
    int min = 0;
    int num = rand()%(max-min+1)+min;
    return num*1.0f;
}

int main()
{
    srand((unsigned)(time(NULL)));
    int T = 68;
    for(int i=0; i<10; i++)
        cout << funkcja(i) << endl;
    return 0;
}

przykładowe wyjście:

0
1
0
1
3
4
5
7
3
6
0

Kod powinien być taki, tam wyżej wkradł się błąd, jednak dalej losuje mi tylko liczby int ....

 #include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

double funkcja(int max)
{
    int min = 0;
    int num = rand()%(max-min+1)+min;
    return num*1.0f;
}

int main()
{
    srand((unsigned)(time(NULL)));
    int T = 68;
    for(int i=0; i<10; i++)
        cout << funkcja(T) << endl;
    return 0;
}
0

wolałbyś
0.00000
1.00000
0.00000
1.00000
3.00000
4.00000
5.00000
7.00000
3.00000
6.00000

0

Czy takie coś może być?

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

double randomnumgen(double low, double high)
{
  double range=(high-low);
  double num = static_cast<double>( rand() ) * range / static_cast<double>( RAND_MAX ) + low ;
  return(num);
}

int main()
{
    srand((unsigned)(time(NULL)));
    int T = 68;
    for(int i=0; i<10; i++)
        cout << randomnumgen(0, T) << endl;
    return 0;
}
0

//mozesz losowac liczbe calkowita a potem dolosowac jej wartosci dziesietne i setne:
double liczba;
liczba = rand()%1000; //tutaj liczba przyjmuje wartosc calkowita od 0 do 999
liczba += (rand()%1000)/1000 // tutaj do liczby dodawane sa liczby po przecinku od 0.0 do 0.999

//w wyniku mozesz miec liczby od 0.0 do 999.999

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