erstellen Sie eine zufällige Zahl zwischen 0 bis 1 kontinuierlich

Ich versuche, das Modell eines Aktienkurses movement in C++. Ich brauche zum erstellen einer Zufallszahl zwischen 0 bis 1.

Aber es scheint, dass der random number generator, der Wert wird immer größer und ist nicht wirklich zufällig.

Der code sieht so aus:

#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");
}

Nicht sicher, wie man dieses Problem lösen.. Müssen einige Hinweise...

  • "der Zufallszahlengenerator Wert wird immer größer und ist nicht wirklich zufällig." - NÖ!
  • ja. die Werte erstellt werden 0.812, 0.814 und so weiter.. Wie ich dieses Problem lösen?
  • wenn das passiert auf jedem erneuten ausführen des Programms, here ist die Erklärung.
  • Da das c++ - warum nutzen Sie nicht eine der modernen Zufallszahlengeneratoren zur Verfügung gestellt? random_device
  • Haben Sie einen Blick auf die standard-Bibliothek uniform_real_distribution.
  • könnten Sie noch mehr Infos rund um "die Werte geschaffen werden 0.812, 0.814 und so weiter"
  • Wenn das nicht c++11, warum nicht verwenden die boost-Bibliotheken anstelle von rand(). Sie sollten eine viel bessere Verteilung der zahlen.
  • besser unter was Messen?
  • "besser" als in besser standhalten zu können (statistische) Untersuchungen, die im Vergleich zu den Eigenschaften eines "echten" Zufalls-generator finden Sie z.B. hier: en.wikipedia.org/wiki/Pseudorandom_number_generator
  • jetzt sehe ich, vielen Dank

InformationsquelleAutor lakesh | 2013-09-30
Schreibe einen Kommentar