JSFiddle - React, Tailwind, and code Playground

HTML

<div id="result"></div>

JavaScript

var n, cubicles_total, doom_soon_weight, doom_late_weight, doom_soon_occupied, doom_late_occupied, maxCubicleChecked;

// Set configuration variables
n = 1000;
cubicles_total = 100;
doom_soon_weight = 1;
doom_late_weight = 1;

doom_soon_occupied = 10;
doom_late_occupied = 100;

max_cubicle_checked = doom_soon_occupied;

// Scenarios
function enactDoomSoon(cubicles) {
    var doom = [];

    for (var i = 0; i < doom_soon_occupied; ++i) doom.push("alive");

    console.log('soon: ', doom.length);

    doom.length = cubicles.length;

    return doom;
}

function enactDoomLate(cubicles) {
    var doom = [];

    for (var i = 0; i < doom_late_occupied; ++i) doom.push("alive");

    doom.length = cubicles.length;

    return doom;
}

var total_weight = doom_soon_weight + doom_late_weight;
var doom_threshold = doom_soon_weight;

var soon_occurences = 0;
var late_occurences = 0;
var aliens_occurrences = 0; // Somehow neither doom occured
var doomed_query_occurences = 0;

for (var i = 0; i < n; ++i) {
    var cubicles, doom;

    // Populate cubicles
    cubicles = [];
    cubicles.length = cubicles_total;

    // God flips a coin
    if (Math.random() * total_weight < doom_threshold) {
        //  There goes our last female...
        cubicles = enactDoomSoon(cubicles);
        doom = 'soon';
    } else {
        // Staying alive!  Staying Alive!
        cubicles = enactDoomLate(cubicles);
        doom = 'late';
    }

    // Check if a random cubicle is occupied
    if ('alive' === cubicles[Math.floor(Math.random() * max_cubicle_checked)]) {
        if ('soon' === doom)++soon_occurences;
        else if ('late' === doom)++late_occurences;
        else ++aliens_occurrences;
    } else ++doomed_query_occurences;
}

// Output result
document.getElementById('result').innerText = "Soon: " + soon_occurences + "; Late: " + late_occurences + '; Aliens: ' + aliens_occurrences + '; Doomed Query: ' + doomed_query_occurences;