我在看this problem(複製下面),並希望在功能上模擬它(特別是在R)一些幫助。功能上在R與甲板洗牌模擬
在下雪的下午,您喜歡玩52個卡片的標準隨機洗牌單人紙牌遊戲。你開始把牌面朝上,一次一張地堆成一堆。當你處理每張牌時,你還可以大聲說出13張牌在標準牌組中的位置:王牌,兩枚,三枚等等(當你到達國王時,你從王牌開始)。你所交易的牌的等級與你所說的等級相匹配,在這種情況下你輸了。如果你在沒有任何比賽的情況下到達甲板的末端,你就會獲勝。
你贏的概率是多少?
通過一個for循環這樣做似乎很簡單 - 每個循環中,通過rep(seq(13),4)
建甲板,置換,然後檢查是否有任何的置換和unpermuted甲板之間的條目是相等的。我特別感興趣的是這個功能方法。爲此,我想構建x <- rep(seq(13),4)
一次,製作一個52 by n矩陣,其中每列是sample(x)
,然後找到一些方法來檢查每列是否爲sample(x) ~ x
,其中〜我的意思是「至少有一個共享元素,這意味着索引和值是相等的「。這將希望返回真/假取決於這是真是假。
因此,對於~
,如果我有它叫compare(x,y)
,我想compare(c(1,2,3),c(3,1,2))
爲假,compare(c(1,2,3,4,5),c(8,9,10,11,5))
爲真。
所以,我的問題是:
什麼是好的(功能)的方式來實施比較?
有沒有更好的方法來解決這個問題的功能?