I want to simulate N-sided biased die?
def roll(N,bias): '''this function rolls N dimensional die with biasing provided''' # do something return result >> N=6 >> bias=( 0.20,0.20,0.15,0.15,0.14,0.16,) >> roll(N,bias) 2
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
A little bit of math here.
A regular die will give each number 1-6 with equal probability, namely
1/6. This is referred to as uniform distribution (the discrete version of it, as opposed to the continuous version). Meaning that ifXis a random variable describing the result of a single role thenX~U[1,6]– meaningXis distributed equally against all possible results of the die roll, 1 through 6.This is equal to choosing a number in
[0,1)while dividing it into 6 sections:[0,1/6),[1/6,2/6),[2/6,3/6),[3/6,4/6),[4/6,5/6),[5/6,1).You are requesting a different distribution, which is biased. The easiest way to achieve this is to divide the section
[0,1)to 6 parts depending on the bias you want. So in your case you would want 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 take a look at the wikipedia entry, you will see that in this case, the cumulative probability function will not be composed of 6 equal-length parts but rather of 6 parts which differ in length according to the bias you gave them. Same goes for the mass distribution.
Back to the question, depending on the language you are using, translate this back to your die roll. In Python, here is a very sketchy, albeit working, example: