BunnyGo, on 2011-October-31, 12:12, said:
Ok, that's about what I'd done too, but I was hoping you'd done the precision.
I couldn't tell how much error was introduced that way.
Too brain fried to work out the conditional probabilities analytically however I coded up a quick Monte Carlo simulation for length >= 8 in at least one of the four hands.
I ended up with 1.978%
Please note: this sim calculates the % of 8+ card suits.
Also, if a single deal includes two 8+ card hands it will only count once.
I attached the MATLAB code for anyone who cares
clear all
clc
Rank = zeros(52,1);
Rank = nominal(Rank);
Deal = dataset(Rank);
Deal.Rank(1:4,1) = 'A';
Deal.Rank(5:8,1) = 'K';
Deal.Rank(9:12,1) = 'Q';
Deal.Rank(13:16,1) = 'J';
Deal.Rank(17:20,1) = '10';
Deal.Rank(21:24,1) = '9';
Deal.Rank(25:28,1) = '8';
Deal.Rank(29:32,1) = '7';
Deal.Rank(33:36,1) = '6';
Deal.Rank(37:40,1) = '5';
Deal.Rank(41:44,1) = '4';
Deal.Rank(45:48,1) = '3';
Deal.Rank(49:52,1) = '2';
Suit = zeros(52,1);
Suit = nominal(Suit);
for i = 0 : 12
Suit(4*i + 1) = 'S';
Suit(4*i + 2) = 'H';
Suit(4*i + 3) = 'D';
Suit(4*i + 4) = 'C';
end
Deal.Suit = Suit
%% shuffle
simlength = 100000;
count = 0;
length_criteria = 8;
for i = 1:simlength
index = randperm(52);
Deal = Deal(index,:);
foo1 = summary(Deal(1:13,2));
foo2 = summary(Deal(14:26,2));
foo3 = summary(Deal(27:39,2));
foo4 = summary(Deal(40:end,2));
if max(foo1.Variables.Data.Counts) >= length_criteria
count = count +1;
elseif max(foo2.Variables.Data.Counts) >= length_criteria
count = count +1;
elseif max(foo3.Variables.Data.Counts) >= length_criteria
count = count +1;
elseif max(foo4.Variables.Data.Counts) >= length_criteria
count = count +1;
end
end
count /1000