# King of Tokyo: Complete Destruction

What is the expected number of turns required to get the required roll for Complete Destruction, given no evolutions or other cards?

The probability of getting a Complete Destruction in 1 turn is roughly 20%. So, the expected number of turns is 1/0.2 or 5 turns on average.

The 20% number comes from two sources. First, I found a lengthy discussion at board game geek on this topic, which gives the final result of approximately 20%. http://boardgamegeek.com/thread/1155539/king-tokyo-odds/page/2

Secondly, I wrote a quick Matlab simulation to compute this. The optimal strategy is pretty clearly to take any die that's a duplicate of another die, and reroll it. Using that fact, I get the following table, which performed 100,000 trials:

``````      % of the time, you get 1-6 different numbers
on 6 dice after 3 rolls
1     2     3     4     5     6
Roll 1 :   0.0   2.0  23.2  50.1  23.1   1.6
Roll 2 :   0.0   0.0   3.3  35.2  52.7   8.8
Roll 3 :   0.0   0.0   0.4  17.4  62.3  19.8
``````

Here is the matlab script I used, in case you're interested:

``````% King of Tokyo, Total Destruction

% Object of total destruction card, is to get 1-6 on 6 different dice
% in three rolls.

NUMTRIALS = 100000;

results.numUniqueRoll1 = zeros(1,6);
results.numUniqueRoll2 = zeros(1,6);
results.numUniqueRoll3 = zeros(1,6);

for ix = 1 : NUMTRIALS
n1 = numel(unique(randi(6, 1, 6)));
results.numUniqueRoll1(n1) = 1 + results.numUniqueRoll1(n1);

n2 = n1 + sum(unique(randi(6,1,6-n1)) > n1);
results.numUniqueRoll2(n2) = 1 + results.numUniqueRoll2(n2);

n3 = n2 + sum(unique(randi(6,1,6-n2)) > n2);
results.numUniqueRoll3(n3) = 1 + results.numUniqueRoll3(n3);
end

fprintf('  %% of the time, you get 1-6 different numbers\n');
fprintf('      on 6 dice after 3 rolls\n');
fprintf('             1     2     3     4     5     6\n');
fprintf('Roll 1 :');
fprintf('%6.1f', 100*results.numUniqueRoll1/NUMTRIALS);
fprintf('\nRoll 2 :');
fprintf('%6.1f', 100*results.numUniqueRoll2/NUMTRIALS);
fprintf('\nRoll 3 :');
fprintf('%6.1f', 100*results.numUniqueRoll3/NUMTRIALS);
fprintf('\n');
``````