The Probability of Finding a Zod Rune - Diablo II - Diablo Legacy Forums - Diablo III Misc Forums - Forums - Diablo Fans

This site works best with JavaScript enabled. Please enable JavaScript to get the best experience from this site.

All users will need to merge their Diablofans account with a new or existing Twitch account starting Nov 20th. You can merge your accounts by clicking here. Have questions? Learn more here.

I just started a course in mathematical statistics. I found an interesting formula that computes the probability of something happening, given the chance of it happening and the number of times the chance occurs.

P(find) = 1-(1-P(drop))^(n)
where P(find) = the probability of finding a Zod
P(drop) = the probability of a Zod drop
n = drops

The drop rates of the Runes (Diablo II) can be found in our wiki and it gave me the drop rate of a Zod rune being 0.00003% chance.

Wich gives: P(drop) = 0.00003/100
n = 10^8 (100 million)

To be 99.999% sure you get a Zod rune you have to get 38 376 412 drops!

But what if you take crafting into account? I wrote this MATLAB file to make an experiment. It's not 100% valid as the random number generator (RNG) in MATLAB isn't a true RNG. It's based on an algorithm and is supposed to give you the same result if you restart the program and do another run. I may have to do another version of this experiment if I find a better way to compute it. (=Have gone to more than 2 lectures in mathematical statistics).

For a proper result one should do a bunch of runs and do statistics of them to get a usefull result. But it takes a while for the computer to do one run, so not this time.

If you like my crazy calculations, please give me a comment and if you have a spare beta key... I wouldn't mind it.

P(find) = 1-(1-P(drop))^(n)where

P(find) = the probability of finding a ZodP(drop) = the probability of a Zod drop

n = drops

The drop rates of the Runes (Diablo II) can be found in our wiki and it gave me the drop rate of a Zod rune being 0.00003% chance.

Wich gives:

P(drop) = 0.00003/100n = 10^8 (100 million)

To be 99.999% sure you get a Zod rune you have to get 38 376 412 drops!

But what if you take crafting into account? I wrote this MATLAB file to make an experiment. It's not 100% valid as the random number generator (RNG) in MATLAB isn't a true RNG. It's based on an algorithm and is supposed to give you the same result if you restart the program and do another run. I may have to do another version of this experiment if I find a better way to compute it. (=Have gone to more than 2 lectures in mathematical statistics).

I inserted Runes (Diablo II) stats and Horadric Cube Recipes (Diablo II) into my MATLAB code:

El = 50.0570/100;

Eld = 35.7067/100;

Tir = 25.2019/100;

Nef = 17.3264/100;

Eth = 18.1371/100;

Ith = 12.3528/100;

Tal = 15.2770/100;

Ral = 10.3674/100;

Ort = 10.8664/100;

Thul = 7.3346/100;

Amn = 6.7373/100;

Sol = 4.5255/100;

Shael = 3.5940/100;

Dol = 2.4055/100;

Hel = 1.8576/100;

Io = 1.2409/100;

Lum = 0.9323/100;

Ko = 0.6222/100;

Fal = 0.4701/100;

Lem = 0.3136/100;

Pul = 0.2361/100;

Um = 0.1574/100;

Mal = 0.1352/100;

Ist = 0.0901/100;

Gul = 0.0011/100;

Vex = 0.0008/100;

Ohm = 0.0011/100;

Lo = 0.0004/100;

Sur = 0.0004/100;

Ber = 0.0002/100;

Jah = 0.0002/100;

Cham = 0.0001/100;

Zod = 0.00003/100;

nEl = 0;

nEld = 0;

nTir = 0;

nNef = 0;

nEth = 0;

nIth = 0;

nTal = 0;

nRal = 0;

nOrt = 0;

nThul = 0;

nAmn = 0;

nSol = 0;

nShael = 0;

nDol = 0;

nHel = 0;

nIo = 0;

nLum = 0;

nKo = 0;

nFal = 0;

nLem = 0;

nPul = 0;

nUm = 0;

nMal = 0;

nIst = 0;

nGul = 0;

nVex = 0;

nOhm = 0;

nLo = 0;

nSur = 0;

nBer = 0;

nJah = 0;

nCham = 0;

nZod = 0;

%Gems

chipped_topaz = 0;

chipped_amethyst = 0;

chipped_sapphire = 0;

chipped_ruby = 0;

chipped_emerald = 0;

chipped_diamond = 0;

flawed_topaz = 0;

flawed_amethyst = 0;

flawed_sapphire = 0;

flawed_ruby = 0;

flawed_emerald = 0;

flawed_diamond = 0;

topaz = 0;

amethyst = 0;

sapphire = 0;

ruby = 0;

emerald = 0;

diamond = 0;

flawless_topaz = 0;

flawless_amethyst = 0;

flawless_sapphire = 0;

flawless_ruby = 0;

flawless_emerald = 0;

baal_runs=0;

while(nZod == 0)

%El rune

if(rand(1) <=>

nEl = nEl + 1;

end

if(nEl >= 3)

nEld = nEld + 1;

nEl = nEl - 3;

end

%Eld rune

if(rand(1) <=>

nEld = nEld + 1;

end

if(nEld >= 3)

nTir = nTir + 1;

nEld = nEld - 3;

end

%Tir rune

if(rand(1) <=>

nTir = nTir + 1;

end

if(nTir >= 3)

nNef = nNef + 1;

nTir = nTir - 3;

end

%Nef rune

if(rand(1) <=>

nNef = nNef + 1;

end

if(nNef >= 3)

nEth = nEth + 1;

nNef = nNef - 3;

end

%Eth rune

if(rand(1) <=>

nEth = nEth + 1;

end

if(nEth >= 3)

nIth = nIth + 1;

nEth = nEth - 3;

end

%Ith rune

if(rand(1) <=>

nIth = nIth + 1;

end

if(nIth >= 3)

nTal = nTal + 1;

nIth = nIth - 3;

end

%Tal rune

if(rand(1) <=>

nTal = nTal + 1;

end

if(nTal >= 3)

nRal = nRal + 1;

nTal = nTal - 3;

end

%Ral rune

if(rand(1) <=>

nRal = nRal + 1;

end

if(nRal >= 3)

nOrt = nOrt + 1;

nRal = nRal - 3;

end

%Ort rune

if(rand(1) <=>

nOrt = nOrt + 1;

end

if(nOrt >= 3)

nThul = nThul + 1;

nOrt = nOrt - 3;

end

%Thul rune

if(rand(1) <=>

nThul = nThul + 1;

end

if(nThul >= 3)

nAmn = nAmn + 1;

nThul = nThul - 3;

chipped_topaz = chipped_topaz + 1;

end

%Amn rune

if(rand(1) <=>

nAmn = nAmn + 1;

end

if(nAmn >= 3)

nSol = nSol + 1;

nAmn = nAmn - 3;

chipped_amethyst = chipped_amethyst + 1;

end

%Sol rune

if(rand(1) <=>

nSol = nSol + 1;

end

if(nSol >= 3)

nShael = nShael + 1;

nSol = nSol - 3;

chipped_sapphire = chipped_sapphire +1;

end

%Shael rune

if(rand(1) <=>

nShael = nShael + 1;

end

if(nShael >= 3)

nDol = nDol + 1;

nShael = nShael - 3;

chipped_ruby = chipped_ruby +1;

end

%Dol rune

if(rand(1) <=>

nDol = nDol + 1;

end

if(nDol >= 3)

nHel = nHel + 1;

nDol = nDol - 3;

chipped_emerald = chipped_emerald +1;

end

%Hel rune

if(rand(1) <=>

nHel = nHel + 1;

end

if(nHel >= 3)

nIo = nIo + 1;

nHel = nHel - 3;

chipped_diamond = chipped_diamond +1;

end

%Io rune

if(rand(1) <=>

nIo = nIo + 1;

end

if(nIo >= 3)

nLum = nLum + 1;

nIo = nIo - 3;

flawed_topaz = flawed_topaz +1;

end

%Lum rune

if(rand(1) <=>

nLum = nLum + 1;

end

if(nLum >= 3)

nKo = nKo + 1;

nLum = nLum - 3;

flawed_amethyst = flawed_amethyst +1;

end

%Ko rune

if(rand(1) <=>

nKo = nKo + 1;

end

if(nKo >= 3)

nFal = nFal + 1;

nKo = nKo - 3;

flawed_sapphire = flawed_sapphire +1;

end

%Fal rune

if(rand(1) <=>

nFal = nFal + 1;

end

if(nFal >= 3)

nLem = nLem + 1;

nFal = nFal - 3;

flawed_ruby = flawed_ruby +1;

end

%Lem rune

if(rand(1) <=>

nLem = nLem + 1;

end

if(nLem >= 3)

nPul = nPul + 1;

nLem = nLem - 3;

flawed_emerald = flawed_emerald +1;

end

%Pul rune

if(rand(1) <=>

nPul = nPul + 1;

end

if(nPul >= 2)

nUm = nUm + 1;

nPul = nPul - 2;

flawed_diamond = flawed_diamond +1;

end

%Um rune

if(rand(1) <=>

nUm = nUm + 1;

end

if(nUm >= 2)

nMal = nMal + 1;

nUm = nUm - 2;

topaz = topaz +1;

end

%Mal rune

if(rand(1) <=>

nMal = nMal + 1;

end

if(nMal >= 2)

nIst = nIst + 1;

nMal = nMal - 2;

amethyst = amethyst +1;

end

%Ist rune

if(rand(1) <=>

nIst = nIst + 1;

end

if(nMal >= 2)

nGul = nGul + 1;

nIst = nIst - 2;

sapphire = sapphire +1;

end

%Gul rune

if(rand(1) <=>

nGul = nGul + 1;

end

if(nGul >= 2)

nVex = nVex + 1;

nGul = nGul - 2;

ruby = ruby +1;

end

%Vex rune

if(rand(1) <=>

nVex = nVex + 1;

end

if(nVex >= 2)

nOhm = nOhm + 1;

nVex = nVex - 2;

emerald = emerald +1;

end

%Ohm rune

if(rand(1) <=>

nOhm = nOhm + 1;

end

if(nOhm >= 2)

nLo = nLo + 1;

nOhm = nOhm - 2;

diamond = diamond +1;

end

%Lo rune

if(rand(1) <=>

nLo = nLo + 1;

end

if(nLo >= 2)

nSur = nSur + 1;

nLo = nLo - 2;

flawless_topaz = flawless_topaz +1;

end

%Sur rune

if(rand(1) <=>

nSur = nSur + 1;

end

if(nSur >= 2)

nBer = nBer + 1;

nSur = nSur - 2;

flawless_amethyst = flawless_amethyst +1;

end

%Ber rune

if(rand(1) <=>

nBer = nBer + 1;

end

if(nBer >= 2)

nJah = nJah + 1;

nBer = nBer - 2;

flawless_sapphire = flawless_sapphire +1;

end

%Jah rune

if(rand(1) <=>

nJah = nJah + 1;

end

if(nJah >= 2)

nCham = nCham + 1;

nJah = nJah - 2;

flawless_ruby = flawless_ruby +1;

end

%Cham rune

if(rand(1) <=>

nCham = nCham + 1;

end

if(nCham >= 2)

nZod = nZod + 1;

nCham = nCham - 2;

flawless_emerald = flawless_emerald +1;

end

%Zod rune

if(rand(1) <=>

nZod = nZod + 1;

end

baal_runs = baal_runs + 1;

end

The results from first run:

You only have to do 509 329 Baal runs!

You also need:

22 104 Chipped Topaz

18 741 Chipped Amethyst

13 876 Chipped Sapphire

10 698 Chipped Ruby

7 610 Chipped Emerald

5 700 Chipped Diamond

4 017 Flawed Topaz

2 914 Flawed Amethyst

2 019 Flawed Sapphire

1 488 Flawed Ruby

1 027 Flawed Emerald

1 094 Flawed Diamond

941 Topaz

825 Amethyst

0 Sapphire

2 Ruby

1 Emerald

3 Diamond

2 Flawless Topaz

1 Flawless Amethyst

1 Flawless Sapphire

2 Flawless Ruby

1 Flawless Emerald

For a proper result one should do a bunch of runs and do statistics of them to get a usefull result. But it takes a while for the computer to do one run, so not this time.

If you like my crazy calculations, please give me a comment and if you have a spare beta key... I wouldn't mind it.

Have a nice day!

Other than that, nice work. Professor should give you credit for doing that.

Just as the Scorpion hunts...Silently Lurking..."Nothing is True. Everything is Permitted." ~ Ezio Auditore de FirenzeThank you! You're right! I think it will be awesome to start fresh at the release. Another 59 days, then Diablo will get his/her face smashed!