Your 6 sided dice should be just fine. No real need to use a "50 sided dice" for that. If nothing else, you're rolling 3 dice so differences would average out over time.
Pseudo-random numbers are what the computer produces. Any given seed will always produce the same sequence of random numbers. You can use this to your advantage if you can set a specific seed. For the purposes of a game, it doesn't matter if they aren't actually *random* but a pseudo-random sequence.
For what it's worth, every test I've ever done with random number generators has produced results within expected limits. Generating a number between 1 and 3 will produce approximately 1/3 of each number if a sufficiently high number of numbers are generated. It only appears to be off because of too few numbers tested. No matter what you do, you won't get exactly 1/3 each time; this is why they call it a random number generator.
OK... RandNorm(10,2) will produce numbers from 4 to 16, with very few at the extremes. 99% of the numbers will be 6 to 14. Three 6 sided dice will produce 3 to 18 with one each of 3, 4, 17 and 18, two each of 5, 6, 15 and 16, and three each of the other 8 numbers: basically very flat but tapering at the extremes. If you wanted more of a bell curve you'd have to roll a lot more dice.
RandNorm does not require you to use every number. If you wanted just 6 to 14 with no possibility of going lower or higher, simply discard the numbers out of range. This will produce a slightly flatter curve and give more numbers at the extremes.
Here's an example of possible code:
Code:
int r = 0;
while (r < 6 || r > 14)
r = RandNorm(10,2);
You could do something similar to cluster the numbers higher or lower.
Hook