Próbuję modelować ruch cen akcji w C++. Potrzebuję utworzyć losową liczbę z zakresu od 0 do 1.Tworzenie losowej liczby od 0 do 1 w trybie ciągłym
Wygląda jednak na to, że wartość generatora liczb losowych stale rośnie i nie jest przypadkowa.
Kod wygląda następująco:
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<time.h>
using namespace std;
int main()
{
double stockPrice = 25;
int start = 0, end = 0;
start = clock();
srand (time(NULL));
cout << (double) rand()/(double) (RAND_MAX) << endl;
system("pause");
while(stockPrice > 18)
{
if(stockPrice == 20)
{
double probability = (rand()/(double)RAND_MAX);
if(probability <= (1/10))
{
stockPrice = stockPrice-1;
}
else
{
stockPrice = stockPrice +1;
}
}
else if (stockPrice < 20)
{
double probability = (rand()/(double)RAND_MAX);
if(probability <= (1/3))
{
stockPrice = stockPrice -1;
}
else
{
stockPrice = stockPrice +1;
}
}
else
{
double probability = (rand()/(double)RAND_MAX);
if(probability <= (2/3))
{
stockPrice = stockPrice -1;
}
else
{
stockPrice = stockPrice +1;
}
}
cout << stockPrice << endl;
}
end = clock();
double t = (double)(start-end)/CLOCKS_PER_SEC;
cout << t << endl;
system("pause");
}
Nie wiesz, jak rozwiązać ten problem .. Potrzebujesz kilku wskazówek ...
"Wartość generatora liczb losowych stale rośnie i nie jest przypadkowa." - nie! –
tak. utworzone wartości to 0,812, 0,814 itd. Jak to naprawić? – lakesh
@lakeh jeśli tak się stanie przy każdym ponownym uruchomieniu programu, wyjaśnieniem jest [tutaj] (http://stackoverflow.com/questions/17385541/c-predictable-rand-output/17385746#17385746). –