They're only off by about 1% and the bias depends on which side was up, it's not that bad. I wouldn't expect most inexpensive dice to be substantially fairer than that.
Honestly I'm sure this is the best solution. I get that a d4 is the obvious choice for something that should have a 1/4 chance of happening but a d8 with 4 numbers twice would be the most appropriate.
The only downside I can see is that a d8 and a d8/4 would be easy to mix up at first glance.
Am I missing something here? Can this even generate 5 or 7?
D20/5 gives [1...4] and D20/10 [1...2], of course assuming whole numbers. Where to get the factors for 5? 5 can be factored only as 5x1 or 1x5 and the 5 cannot be found either in d20/5 or d20/10. Same is true for 7.
And I don't see it happening either if we allow rational numbers. To get 5 we would get the following expressions
5= d120/5 x d220/10 = d120 x d220/50
or
250= d120 x d220
And two d20 multiplied together cannot give us 250.
You are right, in my mind the d20/2 was some sort of iterator over the d20/5, the correct math would be d20/5+(20/5*(d20/10-1)). To get 5 this expresion would be with a 1-5 in the first one and a 11-20 on the second, the first would be 1 (rounded up) , and the second one 4*(2-1), so 5. The idea is that you use the second one to decide how many batches of the full first batch you add to the first one. As if you were rolling a d100 with two d10 but in base 20/5 instead of base 10. It's not actually base 20/5 but that's the idea, one of the dice is the "tens" dice and the other is the "hundreds" dice.
But then do really need the d8? If we toss that in the bin we can go to the universal d60. This one dice will allow us to get
d2 (even/odd)
d3 (d60/20)
d4 (d60/15)
d5 (d60/12)
d6 (d60/10)
d10 (d60/6)
and d12, d15, d20, d30
To keep the same probabilities, you can only reduce and only to one that is a factor. E.g. d20 can be equivalent to d10, d5, d4 and d2.
Multiplying the rolls messes things up. As an example, for d12 as a d6xd2 you have double the chance to roll 2, 4, and 6 and no chance to roll 7, 9, and 11.
You could make the equation a little more complicated (6×(d2-1))+d6 to make it work.
I’d actually like to see a d8/d4 hybrid. Basically take a caltrop d4, snip a bit off the ends to make a truncated tetrahedron. You’ll then have 4 large hexagonal faces and 4 small triangular ones. Put the numbers on the triangles. If it lands upside down, then it is just house rules whether to use the bottom face or to reroll. Or just number the large faces too.
It’s a similar concept to the round safety d4s; just less… round.