所以這段代碼是在我們學校發佈的,它是衆多例子之一(滾動公平骰子的模型)。需要幫助翻譯這段代碼
x<-runif(1)
y<-as.double(x<=c(1/6,2/6,3/6,4/6,5/6,1))*(1:6)
x<-min(y[y>0])
我無法理解此代碼與滾動骰子的關係。
所以第一行生成一個0到1之間隨機均勻分佈的數字x。 在第二行中,我們將一個條件放到x中:如果它的矢量分量小於1(1/6,2/6,3/6,4/6,5/6,1)我們得到TRUE = 1,否則FALSE = 0。
然後這個結果乘以向量(1,2,3,4,5,6)。 最後我們取該矢量乘積的最小值(必須大於零)。
我無法得到這個背後的直覺。這裏有人想介紹這個代碼與現實生活中擲骰子的關係。林困惑..
所以讓我困惑的是: 1.爲什麼我們的隨機生成的數字x介於0和1之間?它可能是在其他一些隨機選擇的時間間隔? 2.爲什麼我們使用矢量(1/6,2/6,3/6,4/6,5/6,1)?你的意思是同樣大小的?你的意思是2/6-1/6 = 1/6和3/6-2/6 = 1/6等嗎?這讓我在與骰子的關係中仍然感到困惑。 3.然後我們用(1,2,3,4,5,6)乘以這個向量?這個矢量看起來像骰子的結果?但爲什麼然後我們選擇該矢量產品的最小值?那背後的原因是什麼? – Biggiez
要回答你的問題: 1.是的,你可以選擇任何其他間隔。模擬骰子很重要的是單位分佈的應用。您也可以使用從1到2的間隔,並將其分隔爲6個相同長度的間隔。 2.使用該向量,由於您的間隔,隨機數來自。是的,那就是我的意思,每個區間的長度都是1/6。 3.這個問題回答了這個例子嗎? –