今晚就研究一下for 迴圈喺R 裏面複雜少少嘅應用
依個我覺得亦係R 一個吸引我嘅地方:
大數據模擬
有一隻叫做「我的學妹不可能那麼萌2」嘅手機game
之前我俾個friend 水咗去玩
咁佢個扭蛋系統就有指明概率
(三星:77.84% 四星:19% 五星:3.16%)
而要達成活動,就要喺活動期間完成500抽
但係喺500抽裏面,究竟會抽到幾多隻五星戰姬喲呢?
如果要同大數據比較,閣下又算係好運定係衰運呢?
於是,我就寫咗一個「模擬1000000玩家完成500抽活動」嘅程序
依個值得解下個邏輯:
(由所需結果向前反推)
1. 要模擬一個1000000玩家經過500 抽嘅過程
最簡單直接嘅諗法就係知道嗰1000000人分別得到幾多隻5星
2. 如果可以建立到一個長度為1000000 嘅vector,而vector 內每一個值都係代表住每一個玩家喺活動當中所得到嘅5星數目
3. 要知道每一個玩家嘅5星數目,可以利用之前教過嘅產生隨機數方法,按照已知概率產生依500抽結果,再將每一次嘅5星數入落去嗰個長度為1000000 嘅Vector 嘅對應位置
4. 首先要有一個長度Vector 俾你,你先至可以重新賦值
所以,第一句我就係用
rep(NA, 1000000)
rep 即係repeat,可以建立一個長度為1000000、值為NA嘅vector
第二步就係用sample產生隨機數
今次嘅概率prob唔再係NULL,而係對應返前面會gen出嚟嘅因子嚟配上相對概率
第三步,數5星數目、並入落去本身值為vector嘅對應位置
重覆1000000次..
之後你想點分析個大數據都得
