看板 java 關於我們 聯絡資訊
※ 引述《RSAES (RR)》之銘言: 其實推文有人提到「老闆的想法」,這個在遊戲界還挺常見的 尤其是博弈遊戲 我舉個粗略一點的例子(事實上他們用的手法精細的多) 我們假設有一個東西中獎率是1/4 但是我們不能用純亂數 因為你用亂數表去跑 Random random = new Random(); if(random.nextInt() % 4 == 0) Jackpot(); 你會發現雖然宏觀來講是極接近1/4是沒錯的,但是跑亂數表下去就知道 你會常常看到10個 20個沒中獎的,而且並不算少見 我隨手跑一個例子給你看 https://gist.github.com/Rayer/558e1e97df70d59b12d3 我隨便跑一次,出來的結果是 XXXXOXXXXXXXXXXXXXXXOXOXXXOXXOXXXXOXXOXXOOXXXXXXOX XXXXOXXXXXOXOXXXOXXOXXXXOXXXXOOOOXXXXOXXOXOXXOXXXO O是中獎(1/4) X是沒中獎(3/4) O剛好25(中獎率1/4)次,說真的算滿少見的 XD 我完全沒有更改任何結果喔 純粹是跑了兩次,選一次看起來聳動點的而已 看到第六次開始那長串X嗎?在遊戲裡面人有一種傾向就是會記憶壞運忘記好運 即使後面還有四連hit,都是沒有用的,他們心裡面就會認定,幹,這營運奸商 這想法就是典型你提到的老闆的想法 所以為了避免這種情形,我們會跑一個buffer讓這種情況最多連續n次沒中 而假設中獎率是1/m 那 n = 1.5*m 也就是中獎率 但是這個「必中」也不能白白送她,我們會從後面扣回來 扣回來的方法很多種,不過比較常見的就是從連續中獎下手,把本來中獎改成沒中 直到把前面「本來沒中,但是因為當次必中」的buffer扣光為止 這樣看起來就會平均一點了(上班中 想到再補實作 實作其實滿簡單的) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.251.135 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1421738021.A.CBD.html
cowbaying: 機率並不表示一定會發生的次數... 01/20 18:03
cowbaying: 就算是1/2的機率 也有可能永遠落在不中那邊 01/20 18:03
ssccg: 那是因為人對機率有不自然的傾向,會有一直沒中接下來更容 01/20 20:18
ssccg: 易中的錯覺(其實下次機率還是不會變) 01/20 20:20
ssccg: 真的調整成人感覺的隨機,那就不是隨機了 01/20 20:21
cyclone350: 英雄聯盟的爆擊率好像就是這麼做的 01/20 20:31
cyclone350: 其實我覺得決策做好後要怎麼寫都不會太困難 01/20 20:32
cyclone350: 要真隨機還是假隨機決定好後就可以做了,前篇推文只是 01/20 20:37
cyclone350: 抱怨一下工作狀況 XD 01/20 20:37
taco0827: 嗯...在業界當營運多年,一般是三種作法 01/20 20:57
taco0827: 1.放任純機率 2.加上槓龜次數後必中 3.逐漸提升命中機率 01/20 20:58
Killercat: 1 2樓,你知我知天知地知,可惜老闆顧客不知啊 XD 01/21 11:40