Math.random()
which produces a number between 0 and 1.
I began by multipling the random number by the maxmium value to give a random number in a range. So for a number between 0 and 4,
Math.round(Math.random()*4)
However this will not give you a true result for 0 or 4, as the rounding for 0 and 4 will have half the possible candidate random numbers.
So another possibility is to use floor instead of round and use the range instead of the max value.
Math.floor(Math.random()*5)
This is floored in principle if the random number returns 1, which is a 1 in a gazillion billion chance. (Haven't actually proved 1 is a possible return value, but assuming it is) So to be clinically correct we can mod the result to always give a value answer.
Math.floor(Math.random()*5)%5
And an example to prove the spread of random numbers:
<html><body>
<script>
var a = new Array(0,0,0,0,0);
for(i=0;i<1000;i++)
{
a[Math.floor(Math.random()*5)%5] += 1;
}
document.write(a+"<br/>");
document.write("Total: "+(a[0]+a[1]+a[2]+a[3]+a[4]));
</script>
</body></html>
<script>
var a = new Array(0,0,0,0,0);
for(i=0;i<1000;i++)
{
a[Math.floor(Math.random()*5)%5] += 1;
}
document.write(a+"<br/>");
document.write("Total: "+(a[0]+a[1]+a[2]+a[3]+a[4]));
</script>
</body></html>
Javascript Random Numbers ... Done.
No comments:
Post a Comment