以前有看到有人在寫「擲骰子100次,打印出擲骰子」的代碼html
便找空寫了一下代碼,不是很好,僅供你們討論數組
由於擲骰子的結果是在1~6之間隨機產生的,所以代碼也必需要模擬隨機的狀況函數
可是電腦是沒法真正的產生隨機數,只能以函數近似生成的方式獲得,所以個人代碼也是基於這種方式寫出的ui
獲得隨機數的方式有兩步,第一步是設置產生隨機數的種子,第二步纔是根據種子獲得隨機數spa
這兩步分別對應了兩個函數:srand()和rand().net
而且因爲是函數生成,函數的特性決定了若是種子同樣,會獲得相同的結果,也就不存在隨機的狀況了unix
爲了不這種狀況,使用時間來做爲隨機數的種子,這裏使用了time()函數code
代碼以下:htm
#include <stdio.h> #include <stdlib.h> // 使用了srand和rand函數 #include <time.h> // 使用了time函數 int main() { // 按時間設置生成隨機數的種子 srand((unsigned)time(NULL)); // 設置一個長度爲6的int數組,存放擲色子的結果 int numbers[6] = {0, 0, 0, 0, 0, 0}; // 循環擲色子100次 for (int i = 0 ; i < 100; i++) { // 生成隨機結果,控制在1~6之間 int num = rand() % 6 + 1; // 根據結果進行對應統計 switch (num) { case 1: // 骰子結果爲1時的計數 numbers[0]++; break; case 2: // 骰子結果爲2時的計數 numbers[1]++; break; case 3: // 骰子結果爲3時的計數 numbers[2]++; break; case 4: // 骰子結果爲4時的計數 numbers[3]++; break; case 5: // 骰子結果爲5時的計數 numbers[4]++; break; case 6: // 骰子結果爲6時的計數 numbers[5]++; default: break; } } // 擲色子完成後遍歷數組輸出結果 for (int j = 0; j < 6; j++) { // 輸出結果 printf("%d", numbers[j]); if (j < 5) { printf(" - "); } else { printf("\n"); } } return 0; }
須要注意的是,因爲計算機的運行速度很是快,所以設置種子是不能在for循環中進行的blog
不然會形成不少次種子是同樣的,形成產生的值也同樣的後果
本文參考了以下文章: