Reducing the VRF Variance for Parcels

I think it’s important for parcels to have the potential to vary a lot between parcels in order to not have everything feel samey. But there is definitely a tradeoff between this and having users not getting rekt. I think one way to improve the situation is to simply distribute the alchemica by a different formula.

One formula we can use is the binomial distribution.

With this distribution, we can have most people receive about the same amount of alchemica, but still leave the potential for large variations. As can be seen from the variations in this chart, it’s possible to make the lower tail more or less punishing depending on the parameters you feed into the distribution.

To be specific, with the binomial distribution with parameters (n, p):

  • Increasing n will decrease the variance of the results, but also provide more possible outcome values
  • Increasing p makes the lower tail more punishing. p also doubles as the average value of the random number

One of the beauties about this distribution is that it’s fairly trivial to implement. We simply generate n random numbers between 0 and 1, and count up how many are greater than p. Divide by n, and you have a new random number between 0 and 1 but distributed according to the distribution. We can then plug this new random number into any transformation we want.

Here’s a concrete example:
We want an alchemica pull to range from 1000-11000 with an average of 3000.
We’ll use binomial(20, 0.2) to create a random number between 0 and 1 with average 0.2
Then the alchemica pull = binomial(20, 0.2) * 10000 + 1000

This achieves an average pull of 3000, a floor of 1000, and a ceiling of 11000 (extremely rare)

Here’s a Binomial Calculator to play around with

10 Likes