# Modified RNG system

How would I set up a RNG system with two variables where one is more likely to be selected than the other. I know an even 50/50 would be

``````array = [1,2];
RNG = array[Math.floor(Math.random()*array.length)];
``````

I generally have a mapped array:

``````var probability = [{value: 1, prob: 0.3}, {value: 3, prob: 0.2}, {value: 0, prob: 0.5}];
``````

Then randomise between 0 and 1 and walk through the array to see which probability area it falls in.

In this example, 0-0.3 is 1, 0.3-0.5 is 3, 0.5-1 is 0.

Or you can just fill the array to match the probability.

``````var probability = [1, 1, 1, 3, 3, 0, 0, 0, 0, 0];
``````

And just choose a number between 0 and the length of the array.

I get how to get the number between 0 and 1, but how do I go through the array with that number?
Something like:

``````for(i = 0; i < probability.length; i++)
{
if(prob <= 0.3)
{
value = 1;
}
else if(prob > 0.3 && prob < 0.5
{
value = 3;
}
else
{
etc.
}
}
``````

I feel like this defeats the purpose of the mapped array though…
EDIT: I just realized this wouldn’t work at all the way I thought it would.

This should work, haven’t tested it but you should get the idea:

``````var rand = Math.random();
var value = probability[0].value;

for (i = probability.length-1; i >= 0; --i) {
if (rand >= probability[i].prob) {
value = probability[i].value;
break;
}
}
``````

This works, just a matter of randomizing the array of images based on the win.