很早以前在簡書寫過幾篇關於隨機數的文章以前寫的很亂,如今從新整理一下這些知識點。本文包含了以下這些知識點:js生成隨機數,生成指定範圍的隨機數,得到不重複隨機數組。javascript
一般咱們生成隨機數都是使用這個方法,這個方法返回值是一個僞隨機選擇的數,該值大於等於0.0且小於1.0,即取值範圍是[0.0,1.0)的左閉右開區間,在該範圍內(近似)均勻分佈。html
下面有張動態圖栗子,能夠看一下。java
Math.floor(x)——使後面括號內的x(任意數值或表達式),生成一個小於等於 x,且與 x 最接近的整數。git
Math.floor(x),能夠簡單理解爲下舍入。這裏有幾個栗子幫助理解,//後面是輸出的內容:github
document.write(Math.floor(0.60) + "<br />")//0
document.write(Math.floor(0.40) + "<br />")//0
document.write(Math.floor(5) + "<br />")//5
document.write(Math.floor(5.1) + "<br />")//5
document.write(Math.floor(-5.1) + "<br />")//-6
document.write(Math.floor(-5.9))//-6複製代碼
1.經過Math.random()生成0-1之間的隨機數
2.而後乘以20,就是取從0~20間的隨機數,注意這裏並非整數。這裏的範圍能夠改變,只要改後面那個數字爲50,、8,就能夠變成0~50,0~80之間的隨機數。
3.Math.floor(),使括號裏面的(Math.random()乘以20)這個表達式,下舍入,生成爲一個整數。 數組
文末有demo連接,能夠把代碼複製回去,本身試試dom
這裏是從任意值開始,咱們剛纔取的隨機數都是從0開始。可是有些場景可能須要咱們取一個指定範圍的隨機數,好比20-30,80-120等等。函數
ps: max - 範圍內的最大值,min - 單位內的最小值學習
按照這個公式來,就沒錯了,下面是demo栗子。ui
若是是負數範圍的隨機數,要進行符號轉換的,好比--30(這裏是說減去三十。),轉換符號後變成+。不轉換符號,會出現報錯!
Math.floor(Math.random()*(-10--30+1)+-30)//錯誤
Math.floor(Math.random()*(-10+30+1)-30);//正確。複製代碼
得到不重複隨機數組的方法很是多,這裏就介紹一種:使用indexOf()的方法來去重,而後經過push()方法來添加數組。
push() 方法可向數組的末尾添加一個或多個元素,並返回新的長度。
看完了仍是一臉懵逼,到底跟隨機數組去重有什麼關係??
這裏有一句特別關鍵:
依靠這句註釋,經過if條件判斷,咱們就能夠作出隨機數組去重的功能。
代碼:
//num是一個數組,randomNum是一個隨機數值。
while (num.length<3){//num.length表明數組的長度,當數組的長度再也不知足小於3,跳出循環
var randomNum=Math.floor(Math.random()*9);//得到在0-9之間的隨機數
if (num.indexOf(randomNum)<0){
//判斷randomNum以前有沒有在數組裏面,若是沒有,就添加進去,若是有,從新循環。
num.push(randomNum);
// 將randomNum這個隨機數,添加到num這個數組裏面。
}
console.log(num);
}複製代碼
1.先限定數組的長度,不然就成死循環了。
2.得到一個隨機數
3.判斷是否已經在數組裏面,若是沒有,就執行if下面的函數。
4.沒有出現這個隨機數,indexOf()這個方法會返回-1,這是判斷條件的依據。
5.當隨機數達到三個了就跳出循環。此時num數組已經去重完畢。
如下是演示的一個栗子,當數組裏面已經有6了,再隨機到6的時候,就會跳過push,直到隨機到不重複的。
以上就是本文介紹的一些隨機數的知識點。
最後:如需轉載,請放上原文連接並署名。碼字不易,感謝支持!由於我常常看不懂別人寫的分享,因此我的寫文比較偏小白,寫的很差之處,歡迎指點。而後就是但願看完的朋友點個喜歡,也能夠關注一下我。
ps:目前待業,座標北京,本人適應互聯網快節奏,高強度,持續學習,持續成長,認真,嚴謹,學習積極性強。中小公司大佬求帶走,郵箱:1677593011@qq.com。
掘金我的主頁
2017.5.9