
Untitled
By: a guest on
Apr 15th, 2012 | syntax:
None | size: 0.94 KB | hits: 17 | expires: Never
How choose random number within range, but weighted toward one part of that range? (in Java)
Pick a random number between 1-10
If it is <= 6
Return a random number between 1-5
Else
Return a random number between 6-10
EndIf
java.utils.Random randomGenerator = new java.utils.Random();
int random = randomGenerator.nextInt(11);
if(random <= 6) { //This is 20% more
random = randomGenerator.nextInt(5) + 1;
} else {
random = randomGenerator.nextInt(5) + 6;
}
public int weightedRandom() {
int rand = Math.floor(Math.random() * 5 + 1) // From 1 to 5
if (Math.random() >= 0.6) {
++rand;
}
return rand;
}
float sum;
do {
sum = rollThreeDice(); // returns 3 to 18, with an average is 10.5
sum -= 10.5; // Now the range is 0 to 7.5, with the lower end being more likely.
} while(sum < 0);
return sum;
int x = (int) (number - (Math.random() - Math.random())
* Math.random() * number);