看板 C_and_CPP 關於我們 聯絡資訊
follow你的假設"母體只有三種答案", 並進一步假設A和B的猜法都不具隨機性 則A猜法的次數分配為1:0, 2:0, 3:1, 4:1, 5:1 <= 這是前文所述的f1(k)成正比 B猜法的次數分配為1:0, 2:0, 3:1, 4:1, 5:1 <= 這是前文所述的f2(k)成正比 可以從這個次數分配算出A、B猜法的機率分配: A: f1(3)=1/3, f1(4)=1/3, f1(5)=1/3, f1(else)=0 B: f2(3)=1/3, f2(4)=1/3, f2(5)=1/3, f2(else)=0 由我前文所述的比較方法,在任意一次A、B之間的較量中,A獲勝的機率為: sum = 0.0; for (i=1;i<=5;i++) for (j=i+1;j<=5;j++) sum += f1(i) * f2(j); 用數字算出來是(1/3) * (1/3) * (2+1+0) = 1/3 同理可算出A、B平手、B獲勝的機率也各是1/3 事實上這個結果一點也不意外, 因為兩者的次數分配一樣 => 兩者之間的對戰彼此獲勝的機率相等,就看平手機率多高 而且因為兩者的次數分配在3、4、5次是平均的1,所以輸贏平手各佔1/3很正常 關於勝敗評判的問題,再來個例題確保你有理解我的意思 假設母體還是只有三種答案,但A、B猜法(都不具隨機性)表現如下: A: 1:0, 2:0, 3:1, 4:2, 5:3 B: 1:0, 2:0, 3:2, 4:3, 5:1 可以算出A獲勝、平手、落敗的機率分別為1/6, 11/36, 19/36 (如果我心算沒錯的話...) 利用上述的比較猜法之間優劣的方法,可以容易的排名多種算法 只要比照一般運動比賽常看到的二維表格紀錄整體比賽結果: A B C ...... A X 1/6,11/36,19/36 ......... B 19/36,11/36,1/6 X C . . . . . . . 並可以累積出各種算法的勝敗次數,以此排名 勝敗次數相同的情況下,可以依序比較敗率、勝率等 如果再相同的話可以去追原始碼比較原始碼的計算效率或是誰的code寫得較好XD 重點是,隨著整體參賽者數量N越來越多, 雖然打完一個完整循環所需要的總次數為CN取2=N(N-1)/2 => O(N^2)不是太理想 但因為比較任兩者優劣的方法只需要跑兩個小小的for迴圈作加法、乘法 而且N其實也不可能大到哪裡去 (超過1000我覺得不太可能吧...) 參賽者只需在一參賽的時候就提出自己的分配了,後續擴充很簡單 我在想可能可以用google doc開一個大家共同編輯的文件 讓每個人自己寫上自己的次數分配並貼上source code連結 假設大家都照一個固定的格式來填,那應該寫出一個工具來生成統計結果不困難 感謝你的疑問,希望這樣有回答到你的問題:) ※ 引述《changyuheng (張昱珩)》之銘言: : 有個疑問: : 為了簡化問題,假設母體只有 3 種答案, : A, B 兩個玩家參與比賽, : 其中各題猜中次數分配如下: : 題號: 1 2 3 : A 第 ? 次猜中:5 4 3 : B 第 ? 次猜中:4 3 5 : 這個比賽將由 B 獲勝, : 但 A, B 不論平均或猜中次數分佈均相等, : 請問該如何解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.168.123