If you're writing a program to generate uniformly random numbers, and you do it correctly, every number is equally likely, whether or not the physical dice are equally likely to roll a given result is moot.
You could create a number generator with a quadrillion possible results and provided your coding was on point and your algorithm for generating uniformly random numbers was correct, each face would be equally likely to occur.
The randomness of dice is in part due to their shape, but someone skilled at throwing dice a specific way could still end up with a much more favorable result than someone throwing them randomly.
Dominic LoRiggio was a man who went to a casino and played Craps with d6's, but threw the dice in such a way that the dice stuck together when thrown, and barely tapped against the far wall of the craps table, which let him control which number the dice would end up on.
There are also flaws in the dice that are made using specific manufacturing processes that create inherent flaws in the center of gravity. More about this method and how it can be detected can be found here.
You can also use a cylinder with equally wide squared off triangular facets to make cylindrical dice with any amount of numbers on them that will produce a random result when thrown. These dice look like this.
As KRyan said, most of the dice are in fact, balanced and when thrown will land on a random result provided their manufacturing method doesn't create any deviance in its center of gravity.. but if you're going to be coding a random number generator, that doesn't matter in the slightest.