mazo=matrix(c(rep( c(2:10,"J","Q","K","A"),4),rep(c("C","D","H","S"),rep(13,4))), ncol=2,dimnames=list(NULL,c("rank","suit")))
reparto_mazo = function()
{
return( mazo[sample(1:52,5,replace=F),])
}
mano = function(hand)
{
ranks_acehigh = c(2:10,"J","Q","K","A")
ranks_acelow = c("A",2:10,"J","Q","K")
rank_i_ah = sort( sapply(hand[,"rank"],function(x) which(x == ranks_acehigh)) )
rank_i_al = sort( sapply(hand[,"rank"],function(x) which(x == ranks_acelow)) )
is_straight = all( rank_i_ah-min(rank_i_ah)+1 == 1:5 ) | all(rank_i_al-min(rank_i_al)+1 == 1:5 )
is_flush = length(unique(hand[,"suit"])) == 1
if (is_straight && is_flush) {
if (all(c("K","A") %in% hand[,"rank"]))
return( "Royal flush" )
else
return( "Straight flush" )
}
if (is_straight)
return( "Straight" )
if (is_flush)
return( "Flush" )
tab = sort( table(hand[,"rank"]) )
if (length(tab)==2) {
if (all(tab == c(1,4)))
return( "Four of a kind" )
if (all(tab == c(2,3)))
return( "Full house")
}
if (length(tab)==3) {
if (all(tab == c(1,1,3)))
return( "Three of a kind")
if (all(tab == c(1,2,2)))
return( "Two pair" )
}
if (length(tab)==4) {
return( "Pair" )
}
return( "No pair" )
}
simulate = function(N)
{
manos = c("Royal flush", "Straight flush", "Four of a kind",
"Full house", "Flush", "Straight",
"Three of a kind", "Two pair", "Pair", "No pair")
res = matrix(rep(0,length(manos)),ncol=1)
rownames(res) = manos
colnames(res) = "Counts"
pb = txtProgressBar(min = 0, max = N, style = 3)
for(i in 1:N) {
mano = mano(reparto_mazo())
res[mano,1] = res[mano,1]+1
setTxtProgressBar(pb, i)
}
return(res)
}
simulate(9999)
|
| | 0%
|
| | 1%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|== | 4%
|
|=== | 4%
|
|=== | 5%
|
|==== | 5%
|
|==== | 6%
|
|==== | 7%
|
|===== | 7%
|
|===== | 8%
|
|====== | 8%
|
|====== | 9%
|
|====== | 10%
|
|======= | 10%
|
|======= | 11%
|
|======= | 12%
|
|======== | 12%
|
|======== | 13%
|
|========= | 13%
|
|========= | 14%
|
|========= | 15%
|
|========== | 15%
|
|========== | 16%
|
|=========== | 16%
|
|=========== | 17%
|
|=========== | 18%
|
|============ | 18%
|
|============ | 19%
|
|============= | 19%
|
|============= | 20%
|
|============= | 21%
|
|============== | 21%
|
|============== | 22%
|
|=============== | 22%
|
|=============== | 23%
|
|=============== | 24%
|
|================ | 24%
|
|================ | 25%
|
|================= | 25%
|
|================= | 26%
|
|================= | 27%
|
|================== | 27%
|
|================== | 28%
|
|=================== | 28%
|
|=================== | 29%
|
|=================== | 30%
|
|==================== | 30%
|
|==================== | 31%
|
|==================== | 32%
|
|===================== | 32%
|
|===================== | 33%
|
|====================== | 33%
|
|====================== | 34%
|
|====================== | 35%
|
|======================= | 35%
|
|======================= | 36%
|
|======================== | 36%
|
|======================== | 37%
|
|======================== | 38%
|
|========================= | 38%
|
|========================= | 39%
|
|========================== | 39%
|
|========================== | 40%
|
|========================== | 41%
|
|=========================== | 41%
|
|=========================== | 42%
|
|============================ | 42%
|
|============================ | 43%
|
|============================ | 44%
|
|============================= | 44%
|
|============================= | 45%
|
|============================== | 45%
|
|============================== | 46%
|
|============================== | 47%
|
|=============================== | 47%
|
|=============================== | 48%
|
|================================ | 48%
|
|================================ | 49%
|
|================================ | 50%
|
|================================= | 50%
|
|================================= | 51%
|
|================================= | 52%
|
|================================== | 52%
|
|================================== | 53%
|
|=================================== | 53%
|
|=================================== | 54%
|
|=================================== | 55%
|
|==================================== | 55%
|
|==================================== | 56%
|
|===================================== | 56%
|
|===================================== | 57%
|
|===================================== | 58%
|
|====================================== | 58%
|
|====================================== | 59%
|
|======================================= | 59%
|
|======================================= | 60%
|
|======================================= | 61%
|
|======================================== | 61%
|
|======================================== | 62%
|
|========================================= | 62%
|
|========================================= | 63%
|
|========================================= | 64%
|
|========================================== | 64%
|
|========================================== | 65%
|
|=========================================== | 65%
|
|=========================================== | 66%
|
|=========================================== | 67%
|
|============================================ | 67%
|
|============================================ | 68%
|
|============================================= | 68%
|
|============================================= | 69%
|
|============================================= | 70%
|
|============================================== | 70%
|
|============================================== | 71%
|
|============================================== | 72%
|
|=============================================== | 72%
|
|=============================================== | 73%
|
|================================================ | 73%
|
|================================================ | 74%
|
|================================================ | 75%
|
|================================================= | 75%
|
|================================================= | 76%
|
|================================================== | 76%
|
|================================================== | 77%
|
|================================================== | 78%
|
|=================================================== | 78%
|
|=================================================== | 79%
|
|==================================================== | 79%
|
|==================================================== | 80%
|
|==================================================== | 81%
|
|===================================================== | 81%
|
|===================================================== | 82%
|
|====================================================== | 82%
|
|====================================================== | 83%
|
|====================================================== | 84%
|
|======================================================= | 84%
|
|======================================================= | 85%
|
|======================================================== | 85%
|
|======================================================== | 86%
|
|======================================================== | 87%
|
|========================================================= | 87%
|
|========================================================= | 88%
|
|========================================================== | 88%
|
|========================================================== | 89%
|
|========================================================== | 90%
|
|=========================================================== | 90%
|
|=========================================================== | 91%
|
|=========================================================== | 92%
|
|============================================================ | 92%
|
|============================================================ | 93%
|
|============================================================= | 93%
|
|============================================================= | 94%
|
|============================================================= | 95%
|
|============================================================== | 95%
|
|============================================================== | 96%
|
|=============================================================== | 96%
|
|=============================================================== | 97%
|
|=============================================================== | 98%
|
|================================================================ | 98%
|
|================================================================ | 99%
|
|=================================================================| 99%
|
|=================================================================| 100% Counts
Royal flush 0
Straight flush 1
Four of a kind 4
Full house 23
Flush 18
Straight 41
Three of a kind 201
Two pair 466
Pair 4233
No pair 5012