用R語言生成隨機數模擬鬥地主

2021-08-15 20:23:45 字數 2239 閱讀 2418

鬥地主中有時候會發現自己某一張牌沒有,比如j一張都沒抓到,下面使用r語言生成隨機數,模擬計算如果自己j一張都沒抓到的情況下,其他兩人抓到j炸的概率為0.104

itersum = 1000000 #總實驗次數

countlostonecard = rep(0,14)

countbomb = rep(0,14)

puke<- c(rep(1:13,4),"a","b")#1-13對應a,2,3,4..j,q,k;a和b對應大小王

tmp <- c()

for(iter in 1:itersum)

for(k in 0:13)

if(sum(j == player3)==4)

}if(bombflag)

}

}}# print("依次輸出自己缺k張牌的概率")

print(countlostonecard/itersum)

# print("在自己缺k張牌的時候,其他兩人有炸彈的概率")

print(countbomb/countlostonecard)

# 結論

# 大致可以計算出,如果某個人沒拿到某張牌,例如9,剩下兩個人中某個人在這裡拿到9炸的概率為0.125

# 但是,因為每個人都拿18張牌,總拿到的牌數是一樣的,如果剩下兩個人在這裡拿了9炸(同時拿了4張),牌數(0,4)(4,0)

# 總牌數一致導致拿牌數比計算出來的0.125要小

# 程式執行出來,剩下兩人出王炸的概率是0.104

> # print("依次輸出自己缺k張牌的概率")

> print(countlostonecard/itersum)

[1] 0.023521 0.161637 0.354045 0.315890 0.123036 0.020506 0.001338 0.000027 0.000000 0.000000 0.000000

[12] 0.000000 0.000000 0.000000

> # print("在自己缺k張牌的時候,其他兩人有炸彈的概率")

> print(countbomb/countlostonecard)

[1] 0.0000000 0.1038809 0.1961643 0.2780272 0.3526122 0.4207549 0.4633782 0.4444444 nan nan

[11] nan nan nan nan

鬥地主中有時候會發現自己一張鬼牌都沒有,下面使用r語言生成隨機數,模擬計算如果自己一張鬼牌都沒有的情況下,其他兩人抓到王炸的概率為0.48

itersum = 10000

countlostonecard = 0

countbomb = 0

puke<- c(rep(1:13,4),"a","b")

tmp <- c()

for(iter in 1:itersum)

if("a" %in% player3 && "b" %in% player3)

if(bombflag)

}}# print("依次輸出自己缺小丑牌的概率")

print(countlostonecard/itersum)

# print("在自己缺小丑牌的時候,其他兩人有王炸的概率")

print(countbomb/countlostonecard)

# 結論

# 大致可以計算出,如果某個人沒拿到"a"和"b",剩下兩個人中某個人在這裡拿了王炸(同時拿了兩張)的概率為0.5

# 但是,因為每個人都拿18張牌,總拿到的牌數是一樣的,如果剩下兩個人在這裡拿了王炸(同時拿了兩張),牌數(0,2)(2,0)

# 這樣的概率會比剩下兩個人在這裡各自拿了一張王(1,1)的概率要小

# 程式執行出來,剩下兩人出王炸的概率是0.48

> # print("依次輸出自己缺小丑牌的概率")

> print(countlostonecard/itersum)

[1] 0.438

> # print("在自己缺小丑牌的時候,其他兩人有王炸的概率")

> print(countbomb/countlostonecard)

[1] 0.4803653

程式還有些許不足的地方,在於發牌的時候,地主應該是比另外兩人多3張牌,這點模擬的時候沒有考慮到。

也沒有進行概率的置信度的計算。

R語言 隨機數與抽樣模擬(1)

分布名稱 隨機數gaussian normal rnorm n,mean 0,sd 1 exponential rexp n,rate 1 gamma rgamma n,shape,scale 1 possion rpois n,lambda weibull rweibull n,shape,sca...

R語言模擬鬥地主淘汰賽分數情況

某乙個鬥地主賽事採取12 9 3的晉級方式 每輪底分也呈現遞增趨勢對晉級情況進行模擬 底分序列需要輸入 base gold ls numeric c names table times 輸贏倍率所對應的頻率 fre times numeric table times 每輪玩家數目序列需要輸入 num...

統計計算 基於R語言的隨機數生成

r中常見一元分布函式 set.seed 191206 設定隨機數種子,為了保證多次生成的隨機數一致,需要保證資料一樣情況下進行再次實驗時可用到 n 100 生成隨機數個數 1 生成beta分布隨機數 x1 rbeta n,2,2 x1 2 生成二項分布隨機數 x2 rbinom n,size 1,p...