在 C 語言開發中,有時需要生成只有兩種特定值的隨機數,例如隨機產生 0 或 1000,而不包含其他數值。標準的 rand() 函數產生的是一定範圍內的偽隨機整數,若直接使用需經過適當轉換才能滿足此需求。
利用取模運算將隨機數限制在 0 和 1 之間,再乘以目標值即可。具體表達式為:
x = rand() % 2 * 1000;
rand() % 2 的結果只能是 0 或 1,乘以 1000 後便得到 0 或 1000。若需其他數值對,只需修改乘數。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 初始化隨機種子,確保每次運行結果不同
srand((unsigned)time(NULL));
int i, x;
for (i = 0; i < 10; i++) {
x = rand() % 2 * 1000;
printf("%5d", x);
}
printf("\n");
return 0;
}
<stdlib.h> 以使用 rand()、srand(),包含 <time.h> 以使用 time()。srand((unsigned)time(NULL)) 以當前時間作為種子,避免每次執行產生相同序列。% 2 將範圍壓縮至 {0, 1}。(rand() % 2) * 2 - 1;若需任意兩值 a、b,可用 a + (rand() % 2) * (b - a)。此方法簡單高效,適用於模擬拋硬幣、二狀態切換等場景。