#include <stdio.h>
#include <stdlib.h>
int main(void) {
for (int i = 0; i <= 20; i++) {
if (i % 5 == 0) printf("\n"); // 每 5 個換行
printf("%10d", 1 + (rand() % 6)); // 1~6
}
return 0;
}
| 語法 | 說明 |
|---|---|
rand() | 產生 0 ~ RAND_MAX 偽隨機整數(需 stdlib.h)。 |
rand() % 6 | 取模縮放至 0~5。 |
1 + ... | 平移至 1~6,符合骰子點數。 |
%10d | 寬度 10 右對齊輸出,排版整齊。 |
rand() 預設種子固定(通常為 1),每次執行序列相同。srand((unsigned)time(NULL))(需 time.h)以當前時間作種子,獲得不同序列。random、arc4random、C++11 <random> 等高品質生成器。#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned)time(NULL));
int n = 20; // 或從命令列讀取
for (int i = 0; i < n; i++) {
if (i % 5 == 0) putchar('\n');
printf("%4d", 1 + rand() % 6);
}
putchar('\n');
return 0;
}
「縮放與平移」是將均勻分佈隨機數映射到任意整數區間 [a, b] 的通用公式:a + rand() % (b - a + 1)。骰子模擬是最直觀的入門範例,理解此原理後可輕鬆擴展至撲克牌洗牌、隨機測試資料生成、蒙地卡羅模擬等場景。