Today another netizen asked me how to generate random numbers in a specified range using JavaScript. I believe everyone knows that Math.random() is a method used to generate random numbers. However, the general reference manual does not explain how to use this method to generate random numbers within a specified range. This time I will introduce Math.random() in detail and how to use it to generate random numbers within a specified range.
Please see here for the basic tutorial
http://www.jb51.net/w3school/js/jsref_random.htm
After reading the tutorial, you should know the basic usage of the Math.random() method.
Use parseInt(), Math.floor() or Math.ceil() for rounding
We see that using the Math.random() method directly generates a number less than 1, so:
Math.random()*5
The result obtained is a random number less than 5. What we usually hope to get is an integer between 0-5, so we need to round the result to get the integer we expect. parseInt(), Math.floor() and Math.ceil() can all play a rounding role.
var randomNum = Math.random()*5; alert(randomNum); // 2.9045290905811183 alert(parseInt(randomNum,10)); // 2 alert(Math.floor(randomNum)); // 2 alert(Math.ceil(randomNum)); // 3
We can see from the tested code that parseInt() and Math.floor() have the same effect, both taking the integer part downwards. So parseInt(Math.random()*5,10) and Math.floor(Math.random()*5) are both generated random numbers between 0-4, Math.ceil(Math.random()*5 ) is a generated random number between 1-5.
Generate random numbers within a specified range
So, if you wish to generate a random number from 1 to any value, the formula is this:
// max - 期望的最大值 parseInt(Math.random()*max,10)+1; Math.floor(Math.random()*max)+1; Math.ceil(Math.random()*max);
If you want to generate a random number from 0 to any value, the formula is like this:
// max - 期望的最大值 parseInt(Math.random()*(max+1),10); Math.floor(Math.random()*(max+1));
If you wish to generate random numbers from any value to any value, the formula is like this:
// max - 期望的最大值 // min - 期望的最小值 parseInt(Math.random()*(max-min+1)+min,10); Math.floor(Math.random()*(max-min+1)+min);
Let’s take a look at other ways to generate random numbers using javascript
1. Use the built-in random number generation method: (just mentioned, here is a brief description)
Math.random(); //该方法产生一个0到1之间的浮点数。 Math.floor(Math.random()*10+1); //1-10 Math.floor(Math.random()*24);//0-23
2. Based on time, random numbers can also be generated:
var now=new Date();
var number = now.getSeconds()C; //This will generate an integer from 0 to 42 based on the current time.
3. A very excellent random number generator program that can be used in many fields.
<script language="JavaScript"><!-- // The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu) // See: http://www.msc.cornell.edu/~houle/javascript/randomizer.html rnd.today=new Date(); rnd.seed=rnd.today.getTime(); function rnd() { rnd.seed = (rnd.seed*9301+49297) % 233280; return rnd.seed/(233280.0); }; function rand(number) { return Math.ceil(rnd()*number); }; // end central randomizer. --> </script>
Let’s look at two more specific examples,
The first method is implemented by rewriting the Math.random method, and the second method is modified from a C implementation, both of which can achieve programming purposes.
Example 1:
<script language="javascript"> var native_random = Math.random; Math.random = function(min, max, exact) { if (arguments.length === 0) { return native_random(); } else if (arguments.length === 1) { max = min; min = 0; } var range = min + (native_random()*(max - min)); return exact === void(0) ? Math.round(range) : range.toFixed(exact); }; document.write(Math.random()); document.write('<br />'); document.write(Math.random(10)); document.write('<br />'); document.write(Math.random(3,10)); document.write('<br />'); document.write(Math.random(2,10,4)); </script>
Example 2:
<script type="text/javascript"> var random = (function(){ var high = 1, low = 1 ^ 0x49616E42; var shuffle = function(seed){ high = seed; low = seed ^ 0x49616E42; } return function(){ var a = new Date()-0 shuffle(a); high = (high << 16) + (high >> 16); high += low; low += high; return high; } })(); alert( random() ); </script>
Okay, through these examples, everyone should have a corresponding understanding of generating random numbers with javascript. I hope this article can give you some inspiration.