2011年5月23日 星期一

C 語言隨機產生浮點數值

C 語言的 Rand() 所產生的是整數值, 想產生浮點數就得自己寫了

隨著 compiler 的不同而所產生出來的最大值(RAND_MAX)也有所變化

通常常見的值為
215-1=32767

而另一個常見的值為
231-1=2147483647

寫法可參考以下 Source Code
/************************************************************************/
/* 隨機產生亂數 (Double)                                                */
/************************************************************************/
double randDouble(double lower, double upper)
{
 int range;           /* 想要產生亂數的區間值 */
 double randomValue;  /* 記錄隨機產生的數值 */

 range = upper - lower;
 
 randomValue = (double) rand();       /* 取得隨機值 */
 randomValue = randomValue / RAND_MAX;   /* 轉換成介於 0 與 1 之間 */
 randomValue = randomValue * range;      /* 調整至要產生的區間值 */
 randomValue = randomValue + lower;      /* 調整至正確對應的值 */

 return randomValue;
}


參考網站
casting Rand () to generate double, float

沒有留言:

張貼留言