I really feel ashamed to ask this question however I don’t have time for revision. Also not a native English speaker, so excuse my lack of math vocabulary.
I am writing a program that requires assigning probabilities to variables then selecting one randomly.
Example:
Imagine that I have I coin, I would like to assign the probably of 70% to heads and 30% to tails. When I toss it I would like to have 70% chance that the heads appears and 30% tails.
A dumb way to do it is to create an array of cells insert the heads 70 cells and the tail in 30. Randomize them and select one randomly.
Edit 1: I also would like to point out that I am not limited to 2 variables. For example lets say that I have 3 characters to select between (*,\$,#) and I want to assign the following probably to each of them * = 30%, \$ = 30%, and # = 40%.
That’s why I did not want to to use the random function and wanted to see how it was done mathematically.
Here is a simple function to calculate weighted rand:
This function accepts an array. For example
array(30,70)will have 30% chance getting0and 70% chance getting1. This should work for multiple weights.Its principle is to subtract the generated random number by the weight until it gets less than or equal to zero.
Demo with
30%:70%Demo with
20%:30%:50%