[問題] 撰寫一程式以產生亂數的問題

看板C_and_CPP (C/C++)作者 (totoron)時間14年前 (2011/07/29 14:38), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/2 (看更多)
習題:撰寫一程式產生500個介於1-6之間的亂數,即1<= x <= 6,並統計各數字出現的次數. 以下是程式碼: #include <stdio.h> #include <stdlib.h> #define randomize() srand((unsigned time(NULL)) int main() { int i,x,n; int ctr[6]={0, 0, 0, 0, 0, 0,}; puts("<<Random list>>"); randomize(); for(i = 0;i < 500; i++){ n= rand()% 6 +1; ctr[n-1]++; printf("%d ", n); } put(""); for(i = 0; i< 6,i++) print("times of %d = %d\n",i+1,ctr[i]); system("PAUSE"); return 0; } ---------------------------------------------------------------- 問題: 1.設定一維陣列的用意? 為何都要先設定為0? 2.印出亂數時的n為何是 rand()%6+1,且加1的用意何在? 3.ctr[n-1]++ 的遞增運算為何要減1呢? 4最後,為何靠ctr[i]就可計算出該數字出現的次數? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.125.87

07/29 14:46, , 1F
看懂這個程式流程,後面的問題應該很簡單
07/29 14:46, 1F

07/29 14:54, , 2F
1.你計數是從什麼數字開始的
07/29 14:54, 2F

07/29 14:55, , 3F
2."餘數"產生的數字範圍最高多少
07/29 14:55, 3F

07/29 14:56, , 4F
3.陣列起始值是多少?
07/29 14:56, 4F

07/29 14:59, , 5F
4.你把陣列想成有編號的箱子
07/29 14:59, 5F

07/29 15:20, , 6F
2.rand()%6等於0~5的範圍  加1讓它變成1~6
07/29 15:20, 6F

07/29 15:24, , 7F
1. 看array章節 2. 自己做實驗不加1會怎樣
07/29 15:24, 7F

07/29 15:26, , 8F
3. 看array章節 4. 看看ctr[] 裡面的資料是怎麼得來的
07/29 15:26, 8F
文章代碼(AID): #1ECbLkJ3 (C_and_CPP)
文章代碼(AID): #1ECbLkJ3 (C_and_CPP)