2016-04-21 11 views
0

私はmin, max範囲内の乱数を生成するには、以下の機能を持っている:Decimalネガを含む範囲内で乱数を生成しますか?

#include <stdlib.h>  /* srand, rand */ 
#include <time.h>  /* time */ 

//.. 

int GenerateRandom(int min, int max) //range : [min, max) 
{ 
    static bool first = true; 
    if (first) 
    { 
     srand(time(NULL)); //seeding for the first time only! 
     first = false; 
    } 

    return min + rand() % (max - min); // returns a random int between the specified range 
} 

私はネガを除くことなく、上記の機能c++ create a random decimal between 0.1 and 10機能および/またはcreate a random decimal number between two other numbers機能を含めたいです。だから私は、「任意の」範囲の間の小数を取得したい:[negative, negative][negative, positive][positive, positive]

+1

あなたはポスト自体へのリンクに情報を取り入れてもらえますか? – kaveish

+0

ちょっと@kaveish、機能は、それらのリンクのタイトルで要約されています。両方とも正の範囲内にあります。私はここでそれをきれいにしたいと思ったが、私はそれを含めるだろう。ありがとう –

+1

'C++ 11'メソッド[here](http://stackoverflow.com/a/19652723/1885037)は、正と負の小数の両方のために働きます。 – kaveish

答えて

1

はあなただけminは、maxが正しく順序付けられていることを確認し、例えば、整数、のではなく、浮動小数点を使用する必要があります

double GenerateRandom(double min, double max) 
{ 
    static bool first = true; 
    if (first) 
    { 
     srand(time(NULL)); 
     first = false; 
    } 
    if (min > max) 
    { 
     std::swap(min, max); 
    } 
    return min + (double)rand() * (max - min)/(double)RAND_MAX; 
} 

LIVE DEMO

+0

ヘイ・ポール。しかし、私は小数点が欲しいです –

+0

@FirstStep:OK、答えは浮動小数点のために更新されました。 –

+0

うまくいきませんでした。入力は常に整数です –

関連する問題