看板 SD-GundamOL 關於我們 聯絡資訊
(補充:此篇原因為上一篇推文有人詢問 「如果每台機體機率均為1/6,那要多少抽才收集完四台天使?」 因此與現實狀況極可能有出入,因為A神龍與A死明顯機率較高) 我的機率真的不好.. 結果還是寫程式讓他統計比較快= = =====output===== test if it is a fair dice in 600,000 tosses: 100173 99920 99318 100387 100345 99857 test start! stop if number 1,2,3,4 have show up: 4 3 1 1 4 2 you have tossed 15 times. stop if number 1,2,3,4 have show up: 4 4 1 3 1 3 you have tossed 16 times. stop if number 1,2,3,4 have show up: 1 1 1 2 0 1 you have tossed 6 times. stop if number 1,2,3,4 have show up: 1 1 3 3 3 4 you have tossed 15 times. stop if number 1,2,3,4 have show up: 1 3 4 1 5 2 you have tossed 16 times. stop if number 1,2,3,4 have show up: 1 1 1 3 3 6 you have tossed 15 times. stop if number 1,2,3,4 have show up: 1 3 1 3 3 2 you have tossed 13 times. stop if number 1,2,3,4 have show up: 2 1 3 2 2 1 you have tossed 11 times. stop if number 1,2,3,4 have show up: 1 2 1 3 3 0 you have tossed 10 times. stop if number 1,2,3,4 have show up: 1 5 4 1 1 3 you have tossed 15 times. Acerage toss times need: 13 這是10次平均的結果 我也有改成測十萬次,結果平均是12次左右可以集滿四天使 因為版面有限就不貼上來了 有興趣又不怕傷眼的可以幫我找找哪裡寫錯..隨便亂搞的可能有寫錯:P 另外徵求機率魔人解答..為什麼期望值是12次..我不清楚XDDD ========== #include <stdio.h> #include <stdlib.h> #include <time.h> #define TEST_TIMES 100000 int main(void) { int i, j; int count[6] = {0}; srand(time(NULL)); for(i = 0; i < 600000; i++) { count[rand()%6]++; } printf("test if it is a fair dice in 600,000 tosses:\n"); for(i = 0; i < 6; i++) { printf("%d ", count[i]); count[i] = 0; } printf("\n\ntest start!\n\n"); int toss_count = 0; int record[TEST_TIMES]; for(i = 0; i < TEST_TIMES; i++) { while( (!count[0]) || (!count[1]) || (!count[2]) || (!count[3]) ) { count[rand()%6]++; toss_count++; } printf("stop if number 1,2,3,4 have show up:\n"); for(j = 0; j < 6; j++) { printf("%d ", count[j]); } printf("you have tossed %d times.\n", toss_count); record[i] = toss_count; // reset data for(j = 0; j < 6; j++) { count[j] = 0; } toss_count = 0; } // summary phase int sum = 0; for(i = 0; i < TEST_TIMES; i++) { sum += record[i]; } int avg_toss_times = sum / TEST_TIMES; printf("Acerage toss times need: %d\n", avg_toss_times); return 0; } -- 問題是扭蛋不可能公平都1/6機率阿.. 那這篇不就跟SD無關了 囧> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.170.160
oldchiou : 請求機率達人 08/01 21:48
LADKUO56 :這期望值在不知道機率函數狀況之下不能算吧... 08/01 21:58
Saint1225 :我走錯版了嗎? 08/01 21:58
asdf751013 :樓上的問題沒有錯~~所以預設假定必為1/6 08/01 21:59
asdf751013 :實際上...每一機的出現機率應該要個別計算 08/01 21:59
asdf751013 :但是...不曉得扭蛋機的程式是怎樣跑的XDDD 08/01 21:59
leafwind :當然囉 因為我是延續前一篇推文的假設 全部1/6 08/01 22:01
leafwind :有人問到如果每台機體1/6的話 平均大概要幾抽 08/01 22:02
leafwind :事實上四天使這台扭蛋機大部分都是A死神跟A神龍.. 08/01 22:03
KZHenry :機率如果不是公正的1/6,怎算也是沒用的 08/01 22:12
KZHenry :話說我今天抽到的是A龍,又要存錢了 08/01 22:13
Saint1225 :發現我運氣不錯十抽破台 08/01 22:15
nonsence31 :好懷念的C語言...........= = 08/01 22:15
nonsence31 :真是噩夢一場 08/01 22:15
LADKUO56 :這題應該不是期望值 而是C6取4去掉有 5 6的情況 08/01 22:16
LADKUO56 :期望值算出來大概是2.3333 落在2跟3之間 08/01 22:16
用期望值來講的確不完全正確 應該說「期望幾抽能抽到四台天使」
gn01887818 :這是.. 08/01 22:20
LADKUO56 :不過講實話這機率應該不是都1/6 所以無用... 08/01 22:20
remix7 :想到高等機率就昏倒~非常困難 08/01 22:26
※ 編輯: leafwind 來自: 118.166.170.160 (08/01 22:29)
LADKUO56 :如果有做出分配的話應該也可以求 不過要蒐集大量樣本 08/01 22:31
leafwind :實際情況就要大量統計 這篇只考慮機會均等 所以12抽 08/01 23:13
gn00465971 :12抽的原因是重複 還記得條件機率吧 08/01 23:45
gn00465971 :"在已經A的情況下要抽到BCD任一" 比"抽ABCD任一"難 08/01 23:46
gn00465971 :類推下去就是12了 當然前提是各台機率1/6啦XD 08/01 23:47
creesybear :這個好耶~推呀~ 08/02 00:04
zet033 :最後才是重點.... 天曉得它機率是不是都一樣....囧 08/02 00:11
※ 編輯: leafwind 來自: 118.166.170.160 (08/02 00:47)