English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我想請問一下

如何調整贏跟輸的機率呢

就是贏的機率變成70%

而輸的機率變成30%

因為程式碼太長了

所以貼網址

在此說聲不好意思

http://www3.hchs.tpc.edu.tw/~s211139/2.cpp

2006-12-11 16:36:01 · 1 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

1 個解答

您老師那題的機率太難算了!
我修正您的 dice 程式成為可操作點數版!
您自己調整 dice 出現數值的機率試試看!
註:
0. 原題的機率就不像是 0.5 : 0.5,只是很接近而已!
1. 下列程式是正常版,您去調那個 +0 和 tmp < __ 的 那個 __,就可以操作點數機率。
2. 注意:原骰子出現2~12的機率是 (1 2 3 4 5 6 5 4 3 2 1) / 36,
 這就是 __ 那列數字的來源。
 注意:7的出現機率是 6/36 是最高的!
  所以,雖然再出現7才算電腦贏,機率仍接近 0.5!
祝 調機率愉快、成功!^_^
P.S. : 先調dice,再把 2000 改很大,確定調出來的機率是對的,再改回2000。
(如果 2000次是老師要求的)

int rolldice(void)
{ int sum, tmp;
tmp = rand() % 6*6 + 0; // 2個骰子 + 操作機率
if (tmp < 1) sum = 2;
else if (tmp < 3) sum = 3;
else if (tmp < 6) sum = 4;
else if (tmp < 10) sum = 5;
else if (tmp < 15) sum = 6;
else if (tmp < 21) sum = 7;
else if (tmp < 26) sum = 8;
else if (tmp < 30) sum = 9;
else if (tmp < 33) sum = 10;
else if (tmp < 35) sum = 11;
else sum = 12;
return sum;
}

2006-12-12 23:14:17 補充:
tmp = rand() % (6*6) 0; 才對

2006-12-12 23:38:28 補充:
機率幫您調成 69.98%,應該夠接近 70%了
tmp = rand() % (2*6*6 33);
__ 依序是 1 2 8 16 26 38 48 56 62 104
您試試

2006-12-12 23:39:11 補充:
tmp = rand() % (2*6*6 33);
33 前明明有 的!

2006-12-12 23:40:07 補充:
可惡的 Yahoo!!
tmp = rand() % (2*6*6 + 33);
半形的 + 不會顯示出來,只好打全型的!

2006-12-14 06:47:46 補充:
2*__ 33
不 *2,我調不到 70%,只能調到 66 就跳到 74
所以,*2,讓我可以細調一些。

題目指定的數有 2, 3, 12, 7, 11。
2, 3, 12 輸,所以要讓 2, 3, 12 出現的機率最小,但不好是 0 吧!
所以讓它們都是 1 / (x * 6 *6 __)。
7 一會兒是贏,一會兒是輸,放棄,不調。
只有11是一定增加贏的機率的。
那就一直增 11 的機率。最後,33就出來了。

2006-12-12 16:52:39 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers