Re: [血尿] 德天使

看板SD-GundamOL (SD鋼彈 Online)作者 (有葉玉米)時間15年前 (2010/08/01 21:45), 編輯推噓9(9017)
留言26則, 12人參與, 最新討論串2/2 (看更多)
(補充:此篇原因為上一篇推文有人詢問 「如果每台機體機率均為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

08/01 21:48, , 1F
請求機率達人
08/01 21:48, 1F

08/01 21:58, , 2F
這期望值在不知道機率函數狀況之下不能算吧...
08/01 21:58, 2F

08/01 21:58, , 3F
我走錯版了嗎?
08/01 21:58, 3F

08/01 21:59, , 4F
樓上的問題沒有錯~~所以預設假定必為1/6
08/01 21:59, 4F

08/01 21:59, , 5F
實際上...每一機的出現機率應該要個別計算
08/01 21:59, 5F

08/01 21:59, , 6F
但是...不曉得扭蛋機的程式是怎樣跑的XDDD
08/01 21:59, 6F

08/01 22:01, , 7F
當然囉 因為我是延續前一篇推文的假設 全部1/6
08/01 22:01, 7F

08/01 22:02, , 8F
有人問到如果每台機體1/6的話 平均大概要幾抽
08/01 22:02, 8F

08/01 22:03, , 9F
事實上四天使這台扭蛋機大部分都是A死神跟A神龍..
08/01 22:03, 9F

08/01 22:12, , 10F
機率如果不是公正的1/6,怎算也是沒用的
08/01 22:12, 10F

08/01 22:13, , 11F
話說我今天抽到的是A龍,又要存錢了
08/01 22:13, 11F

08/01 22:15, , 12F
發現我運氣不錯十抽破台
08/01 22:15, 12F

08/01 22:15, , 13F
好懷念的C語言...........= =
08/01 22:15, 13F

08/01 22:15, , 14F
真是噩夢一場
08/01 22:15, 14F

08/01 22:16, , 15F
這題應該不是期望值 而是C6取4去掉有 5 6的情況
08/01 22:16, 15F

08/01 22:16, , 16F
期望值算出來大概是2.3333 落在2跟3之間
08/01 22:16, 16F
用期望值來講的確不完全正確 應該說「期望幾抽能抽到四台天使」

08/01 22:20, , 17F
這是..
08/01 22:20, 17F

08/01 22:20, , 18F
不過講實話這機率應該不是都1/6 所以無用...
08/01 22:20, 18F

08/01 22:26, , 19F
想到高等機率就昏倒~非常困難
08/01 22:26, 19F
※ 編輯: leafwind 來自: 118.166.170.160 (08/01 22:29)

08/01 22:31, , 20F
如果有做出分配的話應該也可以求 不過要蒐集大量樣本
08/01 22:31, 20F

08/01 23:13, , 21F
實際情況就要大量統計 這篇只考慮機會均等 所以12抽
08/01 23:13, 21F

08/01 23:45, , 22F
12抽的原因是重複 還記得條件機率吧
08/01 23:45, 22F

08/01 23:46, , 23F
"在已經A的情況下要抽到BCD任一" 比"抽ABCD任一"難
08/01 23:46, 23F

08/01 23:47, , 24F
類推下去就是12了 當然前提是各台機率1/6啦XD
08/01 23:47, 24F

08/02 00:04, , 25F
這個好耶~推呀~
08/02 00:04, 25F

08/02 00:11, , 26F
最後才是重點.... 天曉得它機率是不是都一樣....囧
08/02 00:11, 26F
※ 編輯: leafwind 來自: 118.166.170.160 (08/02 00:47)
文章代碼(AID): #1CLNg4lx (SD-GundamOL)
討論串 (同標題文章)
文章代碼(AID): #1CLNg4lx (SD-GundamOL)