A bit of math here.
A regular cube will give each number 1-6 with equal probability, namely 1/6 . This is called uniform distribution (discrete version, as opposed to continuous version). This means that if X is a random variable describing the result of one role, then X~U[1,6] is X distributed equally over all possible results of a stamp toss, from 1 to 6.
This is equivalent to choosing a number in [0,1) when dividing it into 6 parts: [0,1/6) , [1/6,2/6) , [2/6,3/6) , [3/6,4/6) , [4/6,5/6) , [5/6,1) .
You request another distribution that is biased. The easiest way to achieve this is to divide section [0,1) into 6 parts, depending on which offset you want. Thus, in your case, you would like to divide it into the following: [0,0.2) , [0.2,0.4) , [0.4,0.55) , 0.55,0.7) , [0.7,0.84) , [0.84,1) .
If you look at the Wikipedia entry , you will see that in this case the cumulative probability function will not consist of 6 parts of the same length, but of 6 parts, the length of which differs depending on the offset you gave them. The same goes for mass distribution.
Returning to the question, depending on the language you use, simply translate this back into your die roll. Python provides a very schematic, albeit working, example:
import random sampleMassDist = (0.2, 0.1, 0.15, 0.15, 0.25, 0.15) # assume sum of bias is 1 def roll(massDist): randRoll = random.random() # in [0,1) sum = 0 result = 1 for mass in massDist: sum += mass if randRoll < sum: return result result+=1 print roll(sampleMassDist)