2 min read

Can You Slay The Puzzle Of The Monsters’ Gems?

Table of Contents

Problem

A video game requires you to slay monsters to collect gems. Every time you slay a monster, it drops one of three types of gems: a common gem, an uncommon gem or a rare gem. The probabilities of these gems being dropped are in the ratio of 3:2:1 — three common gems for every two uncommon gems for every one rare gem, on average. If you slay monsters until you have at least one of each of the three types of gems, how many of the most common gems will you end up with, on average?

Solution

from random import random

runs = 100000
total_c = 0
for _ in range(runs):
    c, u, r = 0, 0, 0
    while(True):
        p = random()
        if p <= 1/6:
            r += 1
        elif  p >= 1/6 and p <= 1/2:
            u += 1
        else:
            c += 1
        if c > 0 and r > 0 and u > 0:
            break
    total_c += c
print("Average number of common gems:", total_c/runs)

The average number of common gems collected before we have one of each gem is 3.653.65.