# How to approximate rolls for potions of healing using only d6's?

I want to make tabletop potions of healing out of corked vials (test tubes) filled with dice. Each vial would be labeled and filled based on the potion it represents. For example, a vial for a potion of greater healing would contain four d4's and be labeled with a +4 bonus; when administering such a potion, the player would just dump the vial and total the dice plus the bonus, yielding the correct 4d4+4 result, without having to fiddle with their own dice. The vials are meant to speed up play, act as physical reminders that a player has a potion available, and look super cute (assume that these intentions are inviolable and that this craft project is serious business).

It's hard to find enough d4's to pull off this craft project, and test tubes are normally too small for standard 16mm dice anyway, so I've considered using miniature 12mm d6's instead, which are much easier to come by in blocks of large quantities for cheap. The problem is that d6's are slightly more swingy than d4's, and I don't want to grossly deviate from the math underlying potions.

How can I approximate the rolls for each potion of healing while avoiding swingy results? By swingy results I mean unexpectedly low or high totals or a distribution that violates conventions for how healing works in the game.

The following are the restrictions on a valid solution:

• Only d6 dice can be used. It's a physical constraint of the problem.
• Each vial must contain a constant number of dice to dump and roll for the result, without requiring additional dice that weren't in the vial.
• Basic mental math like addition and subtraction is fine.
• Rerolling below a minimum total or similar rules of thumb are fine if they are simple.

Answers telling me to use the average instead of rolling, to roll with online tools, to find tinier d4's or bigger test tubes, to buy a commercially available set of d4-filled vials, or the like aren't solutions. I promise you this question doesn't suffer from an XY problem. The restrictions are inherent to the nature of the craft project, a very serious and important craft project.

For bonus, corresponding AnyDice formulas would be nice but not vital.

• Would you be the only user (as a DM? Player?), or are you considering offering / selling it? – Bash Mar 3 '19 at 14:18
• The craft project would be in use at my table only, for me and my players. – Bloodcinder Mar 3 '19 at 16:47
• You've stated d6 must be used: do they have to be regular d6? i.e some tippex and permanent marker can change the 1 and 6 faces to 3 and 4, making your d6 approximate d4+1 fairly well. – frodoskywalker Mar 3 '19 at 20:04
• @frodoskywalker In the question as asked, they don't have to be standard d6's. Somebody already answered what you just suggested. In reality, I'm unwilling to create/modify dice, but as far as the question is concerned that strategy is legitimate. – Bloodcinder Mar 3 '19 at 20:42

### Let's not overcomplicate it: a simple Nd6 + X formula will work just fine.

Specifically, the effects of Greater (4d4 + 4) and Superior (8d4 + 8) healing potions are quite closely replicated by rolling 2d6 + 7 and 4d6 + 14 respectively. These formulas yield exactly the same average number of hit points healed as the originals (14 for Greater and 28 for Superior potions), and the shapes of the distributions are quite close.

For normal healing potions, naïvely applying the same conversion formula would require us to roll 1d6 + 3.5. Rounding this up to 1d6 + 4 makes these modified potions slightly better (by 0.5 hit points, on average) than the originals, which your players probably won't mind. It also somewhat compensates for the extra "swinginess" (i.e. higher variance) of rolling a single d6 vs. rolling 2d4.

Here's a graph from an AnyDice script demonstrating these distributions:

In particular, rounding the healing amount for the standard potion upwards ensures that the modified potion always have the same or higher chance of healing at least N points as the original, for any N, which is probably desirable. The following graph, plotted from the same script as above, shows the cumulative probabilities of healing at least N points using all these formulas:

BTW, for Supreme healing potions, 5d6 + 28 will give a rather good approximation of the standard 10d4 + 20 formula. As with the standard potion, the average amount healed per potion will be half a hit point higher than with the original formula (45.5 points vs. 45 points), but at these levels that's not really noticeable. The AnyDice script linked above also includes these formulas, but they're commented out by default.

Just for completeness, here are all the original and d6-based formulas in a convenient table:

$$\begin{array}{l|rrrr|rrrr} & \text{Original} &&&& \text{d6-based} \\ \hline \text{Potion type} & \text{HP gained} & \text{Min} & \text{Avg} & \text{Max} & \text{HP gained} & \text{Min} & \text{Avg} & \text{Max} \\ \hline \text{Normal} & 2{\rm d}4+2 & 4 & 7 & 10 & 1{\rm d}6+4 & 5 & 7.5 & 10 \\ \hline \text{Greater} & 4{\rm d}4+4 & 8 & 14 & 20 & 2{\rm d}6+7 & 9 & 14 & 19 \\ \hline \text{Superior} & 8{\rm d}4+8 & 16 & 28 & 40 & 4{\rm d}6+14 & 18 & 28 & 38 \\ \hline \text{Supreme} & 10{\rm d}4+20 & 30 & 45 & 60 & 5{\rm d}6+28 & 33 & 45.5 & 58 \\ \hline \end{array}$$

A nice thing about this method, in my opinion, is that it should work really well with your test tube based physrep idea. All you need to do is put the appropriate number of six-sided dice (1, 2, 4 or 5) in each tube, and add a sticker with the fixed number of points to add (+4, +7, +14 or +28). No fancy math or rerolls or relabeling dice required. Simple!

(Alternatively, if you'd prefer your Greater and Superior healing potions to retain the property of being exactly twice and four times as good as a normal potion, you could adjust the fixed parts of their d6-based formulas up to +8 and +16 respectively. The Supreme potion doesn't follow this pattern even with the original formulas, but adjusting its additive constant up to something like a nice round +30 would probably be reasonable if you choose this approach.)

• This is a very nice solution. I think the biggest "problem", if you can call it that, will be the anti-climax of pouring out a regular healing potion and only having a single d6 come out. – Ryan C. Thompson Mar 3 '19 at 16:07
• @RyanThompson: this can be ameliorated by making it a house rule that the healing player must go "pling pling pling pling!" to represent the +4 HP they always get. (Depending on the kind of players you have, you may need another rule that says making such noises for the other potions is obnoxious and not allowed.) Alternatively, add four small pieces of candy to each tube. (Again, depending on your players, additional guidelines may be needed to prevent abuse...) – Jeroen Mostert Mar 3 '19 at 20:19
• @JeroenMostert I like the idea of rhinestones...although candy could could help if you have some serious potion hoarders! – user3067860 Mar 4 '19 at 17:44
• Side note for people interested in the math: I believe the reason this works so well is that 1d6 has almost the same variance as 2d4. So once you adjust the modifier to make the means the same, you get a distribution with almost the same mean and variance, which pretty much guarantees a similar distribution when you only consider distributions that are sums of dice rolls. – Ryan C. Thompson Mar 4 '19 at 20:31

## Exact solution: Replace each "d4+1" with "d6, reroll 1 and 6"

Each type of healing potion (except the supreme; see below) is some multiple of "d4+1", so a formula that emulates this with a single d6 would be ideal. d4+1 produces a uniform distribution from 2 to 5 inclusive, so a simple rule to emulate this is to roll a d6 and keep re-rolling it until you don't roll a 1 or 6. So, for example, a potion of greater healing, normally 4d4+4, would become 4d6, rerolling all 1s and 6s. Since this rule exactly reproduces the distribution of a d4+1 roll, potions rolled using this rule will behave identically to normal potions rolled using d4s.

As a side bonus, the new formula doesn't involve a modifier, so you don't need to worry about labeling different size potions with different modifiers. This means that you don't necessarily need a different label for each potion size. Just fill it with the appropriate number of dice and make sure people know the rerolling rules.

Note that unlike the other potions, the supreme potion of healing breaks the pattern of having the number of dice equal the modifier. Instead of 10d4+10, it heals for 10d4+20. To apply this rule to the supreme potion, split this into (10d4+10)+10, then replace (10d4+10) with 10d6. This yields 10d6+10 as the new formula for a potion of superior healing.

## Quicker but less precise solution: replace each "d4+1" with "d6"

If rerolling some dice, potentially multiple times, is too slow, you could just roll the d6s once and be done with it. It just so happens that "d4+1" and "d6" have the same average roll (3.5), so this will heal for the same amount on average. However, this approach clearly increases the variance, which means that these potions will be more "swingy".

There are a couple of ways to partially mitigate this "swinginess" without using the per-die reroll method described above. First, you could simply say that the potion never heals for less then the normal minimum, regardless of the roll. For example, a greater healing potion would heal a minimum of 8 hit points, even if you roll 4 1s. The minimum amount is easy to calculate: it's twice the number of dice (except for supreme potions, as mentioned above). Alternatively, if the roll is less than the normal minimum, reroll all the potion's dice at once. This is still quicker than selectively rerolling specific dice, since you can scoop them all up at once. Using either of these methods, the rolls will still be a bit more swingy than the standard formula using d4s, but at least you'll never heal for less than what would normally be possible.

You probably don't want to impose the corresponding limit on the high end, since the math is a bit harder, and I doubt your players are going to complain about the rare cases where potions heal too much.

## Similar mean & variance: Replace each "d4+1" with "2d6/2"

There is a pretty good way to get a similar mean and variance to the normal potion formula using only d6s, with no rerolls: for each d4+1 in the potion, roll two d6s and take the average. In other words, Nd4+N becomes (2*N)d6/2. This has exactly the same mean and only a slightly higher variance, so the distributions are quite similar. The downside of this solution is obvious, of course: you have to roll and add up twice as many dice.

Note: Since you're dividing by two, you'll need to choose a rounding rule. I recommend rounding up, since otherwise the mean will actually be 0.25 lower than a normal potion, and while we all know that this tiny amount is insignificant in the grand scheme, that probably won't stop your players from complaining about how you "nerfed" their potions. As you might expect, rounding up has the opposite effect, giving a mean that is 0.25 higher.

As with the previous rule, you can still apply the variant that any roll lower than the normal minimum potion roll is treated as that minimum (e.g. 8 for greater healing potions).

## AnyDice formulas

Here are AnyDice formulas for all of the above solutions:

\ Set N to 2 for regular healing potion, 4 for greater, 8 for superior \
N: 4

output Nd4+N named "Nd4+N (Normal potion formula)"
output Nd6 named "Nd6, no rerolls"
output [highest of 2*N and Nd6] named "Nd6, minimum 2N"
output ((2*N)d6+1)/2 named "2d6 halved, rounded up"
output [highest of 2*N and ((2*N)d6+1)/2] named "2d6 halved, rounded up, minimum 2N"

• Calculating how many rounds of rerolling the exact solution involves would be helpful, I think. – Tommi Mar 3 '19 at 8:03
• @Thanuir I considered that, but it seems to be a difficult analysis. The number of rerolls for each die has a geometric distribution with success probability 2/3, so the total number of rounds is the max of N geometric distributions, which is not trivial to compute. – Ryan C. Thompson Mar 3 '19 at 15:42
• @Bash I guess that's mathematically equivalent, but I think it's simpler and easier to remember if you apply the same reroll rules to all potion dice. – Ryan C. Thompson Mar 3 '19 at 19:01
• While this seems the obvious solution, it would probably be less confusing to reroll the 5's and 6's. – T.E.D. Mar 4 '19 at 17:06
• As a thought wouldn't it work for the supreme potions to roll 10db and rerolls 1 and 2 instead of 1 and 6? essentially each d6 is then mimicing a d4+2... Though whether its easier to remember to add 10 or remember what to reroll is another matter... – Chris Mar 5 '19 at 17:41

This answer includes a frame challenge - Apologies if not relevant due to your specific craft project :)

# Roll paper instead of 6-sided-dice.

After all, a potion's potency is much more influenced by the way it has been prepared, than it is by the way it is drinked. You may roll d4 by yourself before, note the result on a paper, roll it and put it in your vial.

Cons: Players don't get to roll dice. Part of the fun goes away. The DM also gets more hidden preparation to do.

Pros: Several, actually...

• Proper Nd4+N formulas are respected
• Surprise remains
• Faster than rolling dice in game
• You are not limited to healing potions
• The content may differ from the label (adulterated healing potion, or even worse - poison?)
• Sometimes, the players won't be able to tell. Did this Superior Healing potion heal only 17 hit points because of a lack of luck, or because it was a Greater Healing Potion?
• Man now I want to do this purely for the shenanigans of wrong potions. Insight and slight of hand checks just got way more interesting. – linksassin Mar 4 '19 at 2:47
• +1 This is a really clever idea and that I might try sometime. Nice outside-the-box thinking. – Bloodcinder Mar 4 '19 at 16:37

# With a healthy mix of good and bad dice.

Potions use d4 in pairs. A single d6 can be altered to allow only 4 different outcomes: the downside is that it becomes unfair. You can compensate this by creating another d6, with its own 4 different outcomes, so that it generates fair results when rolled with the other one.

• Use white or green for "good dice".
• Use black or red for "bad dice".

# Using standard dice: just flip them!

Good dice can't roll bad numbers. Flip them whenever you roll 1 or 2 : result becomes 6 or 5. The dice's distribution becomes {6,5,3,4,5,6}.

Bad dice can't roll good numbers. Flip them whenever you roll 5 or 6 : result becomes 2 or 1. The dice's distribution becomes {1,2,3,4,2,1}.

Rolling one of each will give you a very good approximation of a healing potion:

You then only need to adapt the number of dice to simulate various potions:

$$\\begin{array}{|c|cc|cccc|} \hline \textbf{Potion Type} & \textbf{Good Dice} & \textbf{Bad Dice} & \textbf{Min} & \textbf{Mean} & \textbf{Deviation} & \textbf{Max} \\ \hline \text{Regular} & 1 & 1 & 4(=) & 7(=) & 1.51(1.58) & 10(=) \\ \text{Greater} & 2 & 2 & 8(=) & 14(=) & 2.13(2.24) & 20(=) \\ \text{Superior} & 4 & 4 & 16(=) & 28(=) & 3.02(3.16) & 40(=)\\ \text{Supreme} & 8 & 3 & 27(30) & 45.17(45) & 3.54(=) & 60(=)\\ \text{Alternate +10 Supreme} & 5 & 5 & 30(=) & 45(=) & 3.37(3.54) & 60(=) \\ \hline \end{array} \$$

The values between brackets represent the values with tandard Nd4+X formulas ; (=) means both match exactly. Comparison can also be made using a graph :

Supreme potions can be simulated using a +10 modifier ; but I'd rather use 8 good dice and 3 bad ones, which yields very similar results without introducing a constant.

It allows the use of a single, standard label for all healing potions:

"Flip red ⚄ ⚅, and green ⚀ ⚁" could be enough - and made even more intuitive with proper, colored images of dice. A list of the 4 necessary substitutions (e.g "green ⚀ => ⚅", etc) can also be made, and renders flipping unnecessary.

# Customisation option 1: custom dice

If you find flipping dice (or value substitution) troublesome, you may opt for custom dice. Starting with blank dice is easier, but you can also customize standard dice :

• the good dice should have 4 pips added to the 1 and 2 faces: they become "standard-looking" 5 and 6.
• the bad dice should have 4 pips removed from the 5 and 6 faces: they become "standard-looking" 1 and 2.

This implies more work - but will be easier to use at the table.

# Customisation option 2: removing pips

Adding pips is hard, and blank dice may not be available. On the other hand, removing pips is quite easy: just use a good marker with a color close to the dice you use, and hide some pips.

• the good dice should have 2 pips removed from the 5 and 6 faces: they become "standard-looking" 3 and 4. It is not that good anymore,with a distribution of {1,2,3,4,3,4} ; hence, you'll need offsets (see below) to compensate.
• the bad dice should have 4 pips removed from the 5 and 6 faces: they become "standard-looking" 1 and 2. Same old bad dice.

The downside of this method is that you'll need the original offsets (+2 for normal, +4 for greater, +8 for superior and +20 for supreme) to approximate healing potions. Don't use the 8 good / 3 bad method for supreme : it would need a +16 offset, and renders that option pointless.

# How does it compare to other answers?

I couldn't resist the urge to aggregate the various methods listed here in a single anydice link. Use comments to focus on a single potion, or display all of them - but it quickly becomes hard to read properly.

An illustration using the superior potion :

It looks like this method allows the closest results to the original potions in a single roll ; but Limari's proposal will get you very close to this, with less dice and calculation. Ryan's reroll method also has very good results, even better than this one if you are ready to reroll multiple times when necessary - especially for bigger potions (e.g three times for superior).

• This is definitely the sort of solution my mind went to first. What do you think about suggesting that OP start with blank dice (like can be found here for approx. \$0.20 per) rather than modifying dice that already have pips? – nitsua60 Mar 3 '19 at 11:51
• The downvoted answers violate the restrictions of the problem; yours doesn't, so it gets my upvote. Granted, one of my implicit requirements was that I'm using unmodified Chessex 16mm "block of dice" d6's, and I won't be marking them like you suggest, but your solution would work great if I were willing to fill in some of the pips. – Bloodcinder Mar 3 '19 at 13:24
• I think it's probably worth noting that 2 and 4 pips can always be removed from the 5 and 6 faces of a d6 in such a way as to produce the standard arrangement of pips for the reduced face. For example, removing 2 opposite corner pips from the 5 face leaves 3 pips in a diagonal, which is the standard arrangement for 3. So there's no worry about having unfamiliar pip arrangements on the modified faces. – Ryan C. Thompson Mar 3 '19 at 16:23
• I'd rather not revise the question after answers come in. Your answer is good. I'm unlikely to accept it, but somebody else will surely find it useful, and the ideas are sound. – Bloodcinder Mar 3 '19 at 16:45
• @Bash: It's MathJax. As a shortcut to making those tables I just copy from this answer that uses a table to list the various resurrection spells and then edit the contents :P – V2Blast Mar 5 '19 at 19:57

This is an excruciatingly correct method for deriving 1d4 from 2d6... and I do mean excruciatingly: Take inspiration from how 2d10 are converted to a 1d100 percentile throw. More specifically, treat one of the d6 throws as a "ones" die, and another of the d6 throws as a "twos" die (as opposed to a "tens" die for a percentile throw.)

But wait, how is a d6 treated as a "ones" die? By convention: 1, 2, or 3 are treated as 0, while 4, 5, or 6 are treated as 1.

But wait, how is a d6 treated as a "twos" die? By convention: 1, 2, or 3 are treated as 0, while 4, 5, or 6 are treated as 2.

Then add the results, which will range from 0 to 3. Add 1 to get a conventional 1d4 or 2 to get your 1d4+1.

But wait, what the heck are you talking about, how does this even work?
Here, see this table, which by casual inspection shows us that the distribution of 1s, 2s, 3s, and 4s is uniform and thus functionally equivalent to 1d4, without needing to re-roll.

$$\begin{array}{|c|c|c|c|} \hline \text{“twos” d6} & \text{twos} & \text{“ones” d6} & \text{ones} & \text{1d4} \\ \hline 1 & 0 & 1 & 0 & 1\\ \hline 1 & 0 & 2 & 0 & 1\\ \hline 1 & 0 & 3 & 0 & 1\\ \hline 1 & 0 & 4 & 1 & 2\\ \hline 1 & 0 & 5 & 1 & 2\\ \hline 1 & 0 & 6 & 1 & 2\\ \hline 2 & 0 & 1 & 0 & 1\\ \hline 2 & 0 & 2 & 0 & 1\\ \hline 2 & 0 & 3 & 0 & 1\\ \hline 2 & 0 & 4 & 1 & 2\\ \hline 2 & 0 & 5 & 1 & 2\\ \hline 2 & 0 & 6 & 1 & 2\\ \hline 3 & 0 & 1 & 0 & 1\\ \hline 3 & 0 & 2 & 0 & 1\\ \hline 3 & 0 & 3 & 0 & 1\\ \hline 3 & 0 & 4 & 1 & 2\\ \hline 3 & 0 & 5 & 1 & 2\\ \hline 3 & 0 & 6 & 1 & 2\\ \hline 4 & 2 & 1 & 0 & 3\\ \hline 4 & 2 & 2 & 0 & 3\\ \hline 4 & 2 & 3 & 0 & 3\\ \hline 4 & 2 & 4 & 1 & 4\\ \hline 4 & 2 & 5 & 1 & 4\\ \hline 4 & 2 & 6 & 1 & 4\\ \hline 5 & 2 & 1 & 0 & 3\\ \hline 5 & 2 & 2 & 0 & 3\\ \hline 5 & 2 & 3 & 0 & 3\\ \hline 5 & 2 & 4 & 1 & 4\\ \hline 5 & 2 & 5 & 1 & 4\\ \hline 5 & 2 & 6 & 1 & 4\\ \hline 6 & 2 & 1 & 0 & 3\\ \hline 6 & 2 & 2 & 0 & 3\\ \hline 6 & 2 & 3 & 0 & 3\\ \hline 6 & 2 & 4 & 1 & 4\\ \hline 6 & 2 & 5 & 1 & 4\\ \hline 6 & 2 & 6 & 1 & 4\\ \hline \end{array}$$

But wait, how do I get this to work for 4d4+4? Use more dice. The remaining logistics are left as an exercise for the querent depending on their materials at hand, but color coding dice pairs and scribing the "twos" dice is one possible solution.

In fact, the excruciating table above is meant to motivate the idea of converting 2d6 into 1d4. It is not actually necessary to pair, e.g., these two green d6s into a single d4, and those two red d6s into another separate d4.

Instead, one can color code the "ones" dice vs the "twos" dice, i.e., black dice for "ones" and and red dice for "twos".

Then a roll of black = (1, 2, 3, 4) and red = (3, 4, 5, 6) converts to:

Black = (0 + 0 + 0 + 1) and red = (0 + 2 + 2 + 2) for a total of 1 + 6 + 4 + 4 = 15 (where the first 4 is necessary to convert to a d4 and the second 4 converts to d4+1)

Finally if you can find appropriately sized blank d6s which you believe are fair, you can skip all this numerical conversion stuff and just paint the appropriate numerals on the faces of the dice.

If these are always and forever going to be used for 1d4+1, just paint the "twos" dice with 1 and 3, and the "ones" dice with 1 and 2. You can just sum those up directly, and save yourself the hassle of adding those 4's every time.

• It's not obvious that this is intended as a solution to my problem rather than a joke. This violates the restriction of simple rules of thumb. The answer would seem more serious if you could explain how a person at the table could easily remember and compute the math. – Bloodcinder Mar 3 '19 at 12:23
• It is intended as a serious alternative, because it does not require re-rolling (which I find inelegant), does not require addition of coins or other token (which violates the the guidelines), and does not change the probability distribution in some way. It is an exact solution which is not conceptually more difficult than rolling multiple percentile dice at once. – Novak Mar 3 '19 at 17:19
• @Bloodcinder there is an even simpler but related way, included at the end, inspired by the answer from Trish, if you can find blank dice that fit your vials. – Novak Mar 3 '19 at 18:33
• @Bloodcinder I dislike the method, but it's a simple rule of thumb: convert two d6s to d2s and use the results as binary encodings for the d4. It's a hassle, but the rule is simple enough to qualify given your question. – DonFusili Mar 4 '19 at 13:08
• This is essentially a d66 lookup to map to results 1-4, but if you designate one die as primary, you only need to do a lookup if the result is 5-6 and you only need the parity of the secondary die: 5 odd is 1, 5 even is 2, 6 odd is 3 and 6 even is 4. – Richard Mar 4 '19 at 14:09

Several ways actually!

## modified dice

let's get some blank dice. Now we mark two sides opposite each other as blank for reroll. And then we mark the other 4 sides with 1 to 4, using 1-2-4-3 as the order when spinning the die around the reroll axis. (or, if you want to incorporate the +1 per d4: 2-3-5-4)

• Pro: perfectly models a d4 (or d4+1)
• Con: modified dice & possibly multiple rerolls

As an alternative to modifying the dice, we can add some "coin tosses". Let's first look at what a coin could do: for each 5 and 6 one coin is tossed. A head modifies one number above 4 by -4, a tail by -2, turning the die to be either a 1-2-3-4-1-2 (head) or 1-2-3-4-3-4 (tails). Each distribution happens 50% of the time, so the resulting distribution is exactly as the d4.

• Pro: perfectly models a d4
• Con: the need for additional coin tosses up to the number of dice.

But do we need a coin? No. Not actually. Let's look at the dice. If we color code them, so that each is a different color, we could make a circle system. Like for 5d4 we might write down "black-red-green-umbra-white(-black)". If one shows a 5 or 6, we look if the next die in the row is even (head) or odd (tails). Even and odd results are just like a coin and it's quite common to replace coin tosses with this.

Example: We roll 5d4 using the above color code and get b5 r2 g3 u6 w5. With even being -4 and odd -2 that gets turned into b1 r2 g3 u2 w3. That's 11.

• pro: perfectly models a d4, no modified items or extra things needed
• con: the need to mark down the color-code along the dice tube.
• +1 for inspiration of blank dice. – Novak Mar 3 '19 at 18:33

I don't think the default distributions (rolling ten d4 and adding them? really?) are of great importance. It's enough to keep close to the average values.

To make the potions easily distinguishable visually, I would have each use one more die than the previous. Like so:

• d6+4

2d6+7

3d6+18

4d6+31

These formulas should be written on the cap of each potion.

Also, I would use spherical potion bottles with flat bottoms, so you can shake them to roll, without needing to take the cap off.

• Welcome to RPG.SE! Take the tour if you haven't already, and check out the help center for more guidance. – V2Blast Mar 5 '19 at 21:25
• I suggest you indicate the averages and relevant statistics for these proposed dice rolls. Otherwise, there's nothing to indicate how good these values are/aren't. – Bloodcinder Mar 5 '19 at 22:43

Instead of getting fancy with math or messing with standard deviations or the like, I'd take this as an opportunity for a new mechanic.

Problem: we want to emulate Nd4+N with Xd6+Y, because we don't want it to be worse for the players, and if we can use d6s we get something awesome non-mechanically.

Solution: Anything that makes it awesome mechanically.

Namely, I'd replace each 1d4+1 with 1d6. Then add the rule that when a healing potion die lands on a 1, you can choose spend a HD and get that healing as well.

These potions have the same average and are swingier, so are worse. But the option to spend HD without taking a short rest (but only sometimes) makes them quite useful.

• Pretty sure this breaks OP's request for no swinginess "By swingy results I mean unexpectedly low or high totals or a distribution that violates conventions for how healing works in the game." – NautArch Mar 4 '19 at 19:15