The current rate for classic collection cards is a 2/5 chance. But a sample size of 40 is small and your experiment could be explained by luck. From the results I’m seeing on my end it looks like it’s pretty much on the dot when considering every pack opening.
When building out your simulator I recommend also building out some tools to help you test your algorithm. Something that provides a rarity breakdown after generating thousands of packs would go a long way in helping you develop your solution.
I’m having so much fun opening packs with this simulator! Last night I probably opened at least 100 packs of Burning Shadows on here and never got the Rainbow Charizard, so I guess my luck transfers from real life into this game. On the plus side I was able to open a 1st Edition Base Set Charizard in my first few tries! What I really like about this simulator is that it gives people a chance to open packs from sets that they either can’t afford or never opened as a kid.
The issue with your rates are that you can’t buy Celebrations as single packs.
I was thinking that you should probably give an option to ‘open booster box’ etc. but I think that might require too much work in terms of finding out individual pull rates of products and not sure that makes much of a difference for normal sets.
But for holiday sets, where there aren’t any singles or booster boxes, it doesn’t make sense. You would not get a (in my sample size) 2, 1, 1, 0 opening 10 packs of the ETB. I may have seen a 2 happen once but certainly not 1 or 0 where you’d start to complain the box was resealed.