看板 R_Language 關於我們 聯絡資訊
R的初學者 想用R來模擬一個賭博方式 規則如下 本金1000000元 跟對方玩剪刀時頭布 如果贏對方的話 可以得到100元 如果輸或跟對方平手的話給對方100元後 下次變成賭300元 之後再跟對方玩一次剪刀石頭布 如果贏就不玩了 如果輸或平手 就再賭900元 總之就是如果輸了 就賭上次賭額的3倍 想要R模擬破產的機率是多少 wealth=1000000 a=sample(1:3,1) if(a==1) { c=wealth+100 print(c) } if(a!=1) { print(wealth-100) } 這是我想的程式碼 目前以為要用for 或是while來用 但是沒有頭緒 懇請版友幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.69.166 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1492526596.A.023.html
f496328mm: 這應該可以直接用數學推導吧? 04/18 23:09
f496328mm: 程式跑到機率會不準 04/18 23:10
celestialgod: 其實次數很大的時候就會很接近真實值 04/18 23:25
celestialgod: /重複 這好像叫做Monte-Carlo Method 04/18 23:25
celestialgod: 像是模擬pi也是生成兩個0~1的隨機變數 04/18 23:26
celestialgod: 看它們落在直徑為1的圓裡面之比例 04/18 23:27
celestialgod: 比例會很接近pi/4 04/18 23:27
celestialgod: 當重複生成的隨機變數極多的時候 04/18 23:27
celestialgod: matrix(runif(2e6), ncol = 2) %>>% `^`(2) %>>% 04/18 23:29
celestialgod: rowSums %>>% `<=`(1) %>>% mean 04/18 23:29
celestialgod: 大概是 0.785525,而pi/4是0.7853982 04/18 23:29
celestialgod: 生成4e7個話是0.7853596 04/18 23:30
celestialgod: 至於原PO這應該是作業,請善用while + ifelse去做 04/18 23:30
celestialgod: while條件是贏了不玩 04/18 23:31
celestialgod: 跳出條件是財產<0,然後重複幾百萬次,count破產數 04/18 23:32
empireisme: 謝c大,不是作業啦 04/19 11:04
Wush978: #1MCE_j46 XD 04/19 16:44
laxatony: 閣下在實驗馬丁格爾的另一種形式嗎 XD 04/20 00:12