Subscribe
do {
deck = FULL_DECK_MASK;
found = 0;
for (i = 0; i < 1; i++) {br> for (j = 0; j < nb_cards; j++) {br> if ((mask =CARDS_pick_random(&deck,RANDVAL)) < 0) {br> ABORT(10); }
for (k=0;kif ((rank_masks[k]&mask) && >>>
(rank_masks[k]&prev_mask)) {
found = 1;
break; } /* if */
} /* for */
if (found)
break;
prev_mask = mask;
}
total++;
total_found += found;
printf("%d %d %.5f\n", total_found, total, ((float)total_found/(float)total)*100);
}
} while (1);
number_of_trials = 100000;
for ii = 1:number_of_trials
deck = randperm(52);
number = mod(deck,13);
f = find(number(1:51)==number(2:52));
number_of_pairs(ii) = length(f);
end
probability_of_at_least_one_pair = length(find(number_of_pairs)>1)/number_of_trials
average_number_of_pairs = mean(number_of_pairs)
probability_of_success =
0.9549
average_number_of_pairs =
3.0036
while(true)
{
++$sample;
$last = ';
$paired = false;
$deck->shuffle();
$i = 0;
while($i < 52 && !$paired)br> {
$index = $deck->order[$i];
$value = $deck->cards[$index]->value;
if($last == $value)
{
$paired = true;
++$pairs;
}
$last = $value;
++$i;
}
$rate = $pairs / $sample;
if($sample % 100 == 0)
{
echo "Found $pairs paired decks out of $sample: $rate\n";
}
}
>
You are not logged in, either login or create an account to post comments
If you want an approximation, a Monte Carlo method might be appropriate. (Basically, have a computer simulate shuffling a deck of cards many thousands of times and see how often it happens.)
posted by DevilsAdvocate at 8:01 AM on November 17, 2006