async function toss10Times() { if (isAnimating) return; const sides = parseInt(diceSidesSelect.value); const threshold = parseInt(thresholdInput.value); if (threshold > sides) { alert(`Threshold cannot be greater than the number of sides (${sides})`); return; } isAnimating = true; tossBtn.disabled = true; toss10Btn.disabled = true; for (let i = 0; i < 10; i++) { const unlockedCount = dice.filter(d => !d.locked).length; if (unlockedCount === 0) break; Chemical Kinetics Dice Simulator

🎲 Chemical Kinetics Dice Simulator

Demonstrating First-Order Irreversible Reaction Kinetics

How it works:

Unlocked dice (dark gray) = Reactants | Locked dice (dark red) = Products

Each toss represents a time step. Dice that roll ≥ threshold value "react" (lock) and cannot revert back. Watch the exponential decay of reactants!

Total Tosses
0
Unlocked (Reactants)
0
Locked (Products)
0