ISO IEC 9899 2011 (C11)標準中未規定 RAND_MAX 的具體數值。但該標準規定了RAND_MAX 的值應至少為32767。編程的時候,不應該對 RAND_MAX 的具體數值做任何假設。
rand 返回 0~RAND_MAX 之間的隨機數。要得到一個 0~1.0 之間的隨機浮點數,一種簡單的做法是:
/* C語言 */
(double)rand() / RAND_MAX// C++
static_cast<double>(rand()) / RAND_MAX
下面是一個符合 C99 標準的完整 C 語言實例:
#include <stdio.h> // printf#include <stdlib.h> // srand, rand, RAND_MAX, EXIT_SUCCESS#include <time.h> // time#define COUNTS (10)int main(void){ double pseudo_random_numbers[COUNTS] = { 0.0 }; int i = 0; /* 初始化偽隨機數生成器 */ srand((unsigned int)time(NULL)); /* 產生 COUNTS 個 0.0~1.0 之間的隨機浮點數 */ for(i = 0; i < COUNTS; i++) pseudo_random_numbers[i] = (double)rand() / RAND_MAX; for(i = 0; i < COUNTS; i++) printf("%f\n", pseudo_random_numbers[i]); return EXIT_SUCCESS;}