1、預備知識
Math.ceil(n); //向上取整。返回大於等於n的最小整數。github
Math.floor(n); //向下取整。返回爲n的整數部分。dom
Math.round(n); //四捨五入。返回爲n四捨五入後的整數。函數
Math.random(n); //0.0 ~ 1.0 之間的一個僞隨機數。【包含0,不包含1】 //好比0.8647578968666494post
Math.ceil(Math.random()*10); // 獲取從1到10的隨機整數 ,取0的機率極小。學習
Math.floor(Math.random()*10); //可均衡獲取0到9的隨機整數。this
Math.round(Math.random()); //可均衡獲取0或1的隨機整數。(由於random()生成的是0-1的數,四捨五入後只有0或1)spa
Math.round(Math.random()*10); //基本均衡獲取0到10的隨機整數,其中獲取最小值0和最大值10的概率少一半。.net
由於結果在0~0.4 爲0,0.5到1.4爲1...8.5到9.4爲9,9.5到9.9爲10。因此頭尾的分佈區間只有其餘數字的一半。
二 、生成[n,m]的隨機整數
函數功能:生成[n,m]的隨機整數。
在js生成驗證碼或者隨機選中一個選項時頗有用。。
//生成從minNum到maxNum的隨機數
function randomNum(minNum,maxNum){
switch(arguments.length){
case 1:
return parseInt(Math.random()*minNum+1,10);
break;
case 2:
return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
break;
default:
return 0;
break;
}
}
過程分析:
Math.random()生成[0,1)的數,因此
Math.random()*5生成[0,5)的數。
一般指望獲得整數,因此要對獲得的結果處理一下。
parseInt(),Math.floor(),Math.ceil()和Math.round()均可獲得整數。
可是parseInt()和Math.floor()結果都是向下取整。
因此Math.random()*5生成的都是[0,4] 的隨機整數。
因此生成[1,max]的隨機數,公式以下:
// max - 指望的最大值
parseInt(Math.random()*max,10)+1;
Math.floor(Math.random()*max)+1;
Math.ceil(Math.random()*max);
因此生成[0,max]到任意數的隨機數,公式以下:
// max - 指望的最大值
parseInt(Math.random()*(max+1),10);
Math.floor(Math.random()*(max+1));
因此但願生成[min,max]的隨機數,公式以下:
// max - 指望的最大值
// min - 指望的最小值
parseInt(Math.random()*(max-min+1)+min,10);
Math.floor(Math.random()*(max-min+1)+min);
==================================================================================================================================================================
寫在前面:關於取得隨機數的時候通常都會帶着小數點,生成一個整數老是更容易方便咱們計算以及使用,那麼有哪些方法可使隨機數生成一個整數?
傳送門:(我明天再寫。)
引言:隨機數在實際中使用很普遍,好比要隨即生成一個固定長度的字符串、數字。或者像js-task1中同樣隨機選擇一個盒子,隨機一個顏色等等。這個時候咱們就要知道用js應該如何獲取一個隨機數。
1.首先咱們須要知道下面這幾個概念,算是預備知識,知識點主要都是從w3c,Math屬性介紹裏面演化出來的:傳送門
Math:數學對象,提供對數據的數學計算。
1.Math.random(); 返回爲0-1間的一個隨機數(包括0,不包括1)
2.Math.round(num); 函數結果爲num四捨五入後的整數,參數num爲一個數值。
3.Math.floor(num); //向下取整;函數結果爲num的整數部分,參數num爲一個數值。
4.Math.ceil(num); //向上取整;函數結果返回大於等於n的最小整數。
用Math.ceil(Math.random()*10);時,主要獲取1到10的隨機整數,取0的概率極小。
用Math.round(n); 返回n四捨五入後的整數的值。
用Math.round(Math.random());可均衡獲取0到1的隨機整數。
用Math.round(Math.random()*10);時,可基本均衡獲取0到10的隨機整數,其中獲取最小值0和最大值10的概率少一半。
用Math.floor(n); 返回小於等於n的最大整數。
用Math.floor(Math.random()*10);時,可均衡獲取0到9的隨機整數。
2.若是看不懂的話,也不要緊,本身多寫寫demo而後回頭再看這些屬性,或者多作作項目,就會運用了!不要過於糾結這些,細枝末節!
3.生成隨機數的公式!!
若是你但願生成任意值到任意值(也就是指定範圍內)的隨機數,我從網上找來了生成公式:Math.floor(Math.random()*(max-min+1)+min);
// max - 指望的最大值
// min - 指望的最小值
4.下面是我本身demo 的一些代碼,你們能夠複製回去,試一試。
下面這是我代碼和demo頁面的截圖。
你們能夠去試試基本上就是這樣子了,碼字不易,喜歡的能夠點個喜歡。github能夠互相f。
=========================================================================================
前言:
JS沒有現成的函數,可以直接生成指定範圍的隨機數。
可是它有個函數:Math.random() 這個函數能夠生成 [0,1) 的一個隨機數。
利用它,咱們就能夠生成指定範圍內的隨機數。
而涉及範圍的話,就有個邊界值的問題。這樣就包含四種狀況:
1)min ≤ r ≤ max (通常這種比較常見)
2)min ≤ r < max
3) min < r ≤ max
4)min < r < max
1、min ≤ r ≤ max
1
2
3
4
5
6
|
function
RandomNumBoth(Min,Max){
var
Range = Max - Min;
var
Rand = Math.random();
var
num = Min + Math.round(Rand * Range);
return
num;
}
|
2、min ≤ r < max
1
2
3
4
5
6
|
function
RandomNum(Min, Max) {
var
Range = Max - Min;
var
Rand = Math.random();
var
num = Min + Math.floor(Rand * Range);
return
num;
}
|
3、min < r ≤ max
1
2
3
4
5
6
7
8
9
|
function
RandomNum(Min, Max) {
var
Range = Max - Min;
var
Rand = Math.random();
if
(Math.round(Rand * Range)==0){
return
Min + 1;
}
var
num = Min + Math.round(Rand * Range);
return
num;
}
|
4、min < r < max
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function
RandomNum(Min, Max) {
var
Range = Max - Min;
var
Rand = Math.random();
if
(Math.round(Rand * Range)==0){
return
Min + 1;
}
else
if
(Math.round(Rand * Max)==Max)
{
index++;
return
Max - 1;
}
else
{
var
num = Min + Math.round(Rand * Range) - 1;
return
num;
}
}
|
以上這篇JS生成某個範圍的隨機數【四種狀況詳解】就是小編分享給你們的所有內容了,但願能給你們一個參考,也但願你們多多支持腳本之家。
/***************************************
* 生成從minNum到maxNum的隨機數。
* 若是指定decimalNum個數,則生成指定小數位數的隨機數
* 若是不指定任何參數,則生成0-1之間的隨機數。
*
* @minNum:[數據類型是Integer]生成的隨機數的最小值(minNum和maxNum能夠調換位置)
* @maxNum:[數據類型是Integer]生成的隨機數的最大值
* @decimalNum:[數據類型是Integer]若是生成的是帶有小數的隨機數,則指定隨機數的小數點後的位數
*
****************************************/
function randomNum(maxNum, minNum, decimalNum) {
var max = 0, min = 0;
minNum <= maxNum ? (min = minNum, max = maxNum) : (min = maxNum, max = minNum);
switch (arguments.length) {
case 1:
return Math.floor(Math.random() * (max + 1));
break;
case 2:
return Math.floor(Math.random() * (max - min + 1) + min);
break;
case 3:
return (Math.random() * (max - min) + min).toFixed(decimalNum);
break;
default:
return Math.random();
break;
}
}
var str = "";
var err = 0;
for (var i = 11; i < 19; i++) {
t = randomNum(6, i);
if (t < 6 || t > 15)
err++;
str += t;
if (i % 2 == 0) {
str += '\r';
}
else
str += '==';
}
alert(err + "\r" + str);