|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2005-08-30, 06:45 PM | #1 |
註冊會員
|
擲骰子的問題
請問各位大大幾個程式的問題
使用亂數產生一長度為n,範圍介於1~6的亂數陣列,並將該陣列以函數参數的方式回傳,來模擬擲了n次骰子的結果。 #include "stdio.h" #include "stdlib.h" // dist[6] : given distribution of each number's appearances // result[n] : simulation result // n : rolling a dice n times // void rolling(int dist[6], int result[][2], int n) { //在這加入程式碼 } void print(int vals[][2], int len) { int i; int cnt[6]; for(i=0; i<6; i++) cnt[i]=0; printf("Rolling result : "); for(i=0; i<len; i++) { printf("(%d,%d) ",vals[i][0],vals[i][1]); int index=vals[i][0]-1; cnt[index]++; index=vals[i][1]-1; cnt[index]++; } printf("\n"); for(i=0; i<6; i++) { printf("\tdice(%d) = %4.1f \n",i+1,(double)cnt[i]/len*100); } printf("\n"); } int main(){ const int n=100; int dices[n][2]; int dist1[] = {3,3,3,6,6,12}; int dist2[] = {6,3,6,1,1,12}; int dist3[] = {1,1,2,1,1,4}; srand(time(NULL)); rolling(dist1,dices,n); print(dices,n); rolling(dist2,dices,n); print(dices,n); rolling(dist3,dices,n); print(dices,n); return 0; } |
送花文章: 0,
|
2005-08-31, 03:58 AM | #2 (permalink) |
管理員
|
#include <stdio.h>
#define random(num) (rand() % (num)) /* random 取亂數 */ #define randomize() srand((unsigned)time(NULL)) /* randomize 清除取亂數種子表 */ #define clrscr() system("CLS") /* 畫面清除 */ #define pause() system("PAUSE") /* 暫停畫面 */ #define S 100 /* 設定巨集數值 S 為 100,擲骰子次數 */ #define U 6 /* 設定巨集數值 U 為 6,當骰子的數字 */ int pr_s(int au[]); /* 顯示擲骰子結果 */ int run_c(int au[]);/* 執行擲骰子+統計 */ main() { int au[u]={0}; run_c(au); pr_s(au); pause(); } run_c(int au[]) { int i,c; randomize(); for(i=0;i<S;i++) { c=random(U); au[c]++; } } pr_s(int au[]) /* 顯示擲骰子結果 */ { int i; clrscr(); printf("擲骰子 %d 次:\n",S); for(i=0;i<U;i++) { printf("\n%d 出現 %5d 次,機率為 % 3.1f %%",i+1,au[i],(float)au[i]/S*100); } printf("\n\n"); } |
__________________ 在「專業主討論區」中的問題解決後,要記得按一下 按鈕喔, 這是一種禮貌動作。 一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。 不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。 天線寶寶說再見啦~ ... 天線寶寶說再見啦~ 迪西:「再見~ 再見~」 『 Otaku Culture Party 』 關心您 ... |
|
送花文章: 37855,
|
2005-08-31, 04:32 AM | #3 (permalink) |
管理員
|
#include "stdio.h"
#include "stdlib.h" #define random(num) (rand() % (num)) /* random 取亂數 */ #define randomize() srand((unsigned)time(NULL)) /* randomize 清除取亂數種子表 */ #define clrscr() system("CLS") /* 畫面清除 */ #define pause() system("PAUSE") /* 暫停畫面 */ /* dist[6] : given distribution of each number's appearances result[n] : simulation result n : rolling a dice n times */ void rolling(int dist[6], int result[][2], int n) { int i,c; randomize(); for(i=0;i<n;i++) { c=random(6); result[i][0]=i+1; result[i][1]=dist[c]; } } void print(int dist[6],int vals[][2], int len) { int i; int cnt[6]={0}; int index; /* for(i=0; i<6; i++) */ /* cnt[i]=0; */ clrscr(); printf("Rolling result : "); for(i=0;i<6;i++) printf("(%d) ",dist[i]); printf("\n"); for(i=0; i<len; i++) { printf("(%3d,%2d) ",vals[i][0],vals[i][1]); /* int index=vals[i][0]-1; */ index=vals[i][1]-1; cnt[index]++; } printf("\n"); for(i=0; i<6; i++) { printf("\tdice(%d) = %4.1f \n",i+1,(double)cnt[i]/len*100); } printf("\n"); pause(); } int main(){ const int n=100; int dices[n][2]; int dist1[] = {3,3,3,6,6,12}; int dist2[] = {6,3,6,1,1,12}; int dist3[] = {1,1,2,1,1,4}; srand(time(NULL)); rolling(dist1,dices,n); print(dist1,dices,n); rolling(dist2,dices,n); print(dist2,dices,n); rolling(dist3,dices,n); print(dist3,dices,n); } |
送花文章: 37855,
|
2005-08-31, 04:48 AM | #4 (permalink) |
管理員
|
#include "stdio.h"
#include "stdlib.h" #define random(num) (rand() % (num)) /* random 取亂數 */ #define randomize() srand((unsigned)time(NULL)) /* randomize 清除取亂數種子表 */ #define clrscr() system("CLS") /* 畫面清除 */ #define pause() system("PAUSE") /* 暫停畫面 */ /* dist[6] : given distribution of each number's appearances result[n] : simulation result n : rolling a dice n times */ void rolling(int result[][2], int n) { int i,c; randomize(); for(i=0;i<n;i++) { result[i][0]=i+1; result[i][1]=random(6)+1; } } void print(int vals[][2], int len) { int i; int cnt[6]={0}; int index; /* for(i=0; i<6; i++) */ /* cnt[i]=0; */ clrscr(); printf("Rolling result : \n"); for(i=0; i<len; i++) { printf("(%3d,%2d) ",vals[i][0],vals[i][1]); /* int index=vals[i][0]-1; */ index=vals[i][1]-1; cnt[index]++; } printf("\n"); for(i=0; i<6; i++) { printf("\tdice(%d) = %4.1f %%\n",i+1,(double)cnt[i]/len*100); } printf("\n"); pause(); } int main(){ const int n=100; int dices[n][2]; rolling(dices,n); print(dices,n); } |
送花文章: 37855,
|