2016-04-21 47 views
0

我有以下功能,以產生min, max範圍內的隨機數:十進制生成包含底片的範圍內的隨機數?

#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」方法[這裏](http://stackoverflow.com/a/19652723/1885037)適用於正數和負數小數。 – kaveish

回答

1

你只需要確保minmax被正確排序,並使用浮點而不是整數,例如

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:好的,回答更新浮點數。 –

+0

沒有工作,輸入始終是整數 –

相關問題