JavaScript中隨機(jī)數(shù)方法?Math.random()
前言:
我們學(xué)習(xí)項(xiàng)目的時(shí)難免遇到一些問題,比如;遇到一個(gè)功能需要隨機(jī)返回多條不重復(fù)的數(shù)據(jù),也可以是拿了就用,下次再需要時(shí)已經(jīng)忘記如何使用了;雖然接觸使用的場(chǎng)景很少,但也有必要單獨(dú)拿出來講一講
定義
js中的生成隨機(jī)數(shù)操作是基于 Math 方法下的 random() 方法
Math.random() : 隨機(jī)獲取范圍內(nèi)的一個(gè)數(shù) ( 精確到小數(shù)點(diǎn)后14位 )
基礎(chǔ)寫法
隨機(jī)生成一個(gè) 0 ~ 1 之間的數(shù):
?// 語法: Math.random()

生成指定范圍內(nèi)的隨機(jī)數(shù)
生成 小于 m 的隨機(jī)數(shù)(含小數(shù)):
?// 語法: Math.random() * m ?Math.random() * 60

生成 小于m 的整數(shù):
可以使用 parseInt 去除小數(shù)點(diǎn)的形式將生成的隨機(jī)數(shù)轉(zhuǎn)換為整數(shù)
?// 語法: Math.random() * m ?parseInt(Math.random()* 60)

生成向下取整的隨機(jī)整數(shù):
使用Math方法下的floor屬性進(jìn)行舍棄小數(shù)向下取整, 當(dāng)然你也可以使用 Math.ceil 向上取整
?// 語法: Math.random() * m ?Math.floor(Math.random()* 60)

生成兩個(gè)數(shù)之間的隨機(jī)數(shù)
表示生成 n~m+n 之間的隨機(jī)數(shù):
?// 語法: Math.random() * m + n ?// 范圍:n ~ m+n ?Math.random() * 10 + 8 ?// 8 ~ 18

生成 -n~m+n 之間的隨機(jī)數(shù):
?// 語法: Math.random() * m - n ?// 范圍:-n ~ m+n ?Math.random() * 10 - 8 ?// -8 ~ 2

生成 -m~0 之間的隨機(jī)數(shù):
?// 語法: Math.random() * m - m ?// 范圍:-m - 0 ?Math.random() * 10 - 10 ?// -10 - 0

生成 n~m 之間的隨機(jī)整數(shù)(包括n與m):
?// 語法: Math.floor(Math.random() * (m - n)) + n ?// 范圍:n ~ m ?Math.floor(Math.random() * (8 - 100)) + 100 ?// 8~100

常用場(chǎng)景
看完語法,接下來講一個(gè)我項(xiàng)目中用到的場(chǎng)景 - 熱榜,將每次隨機(jī)獲取3條不重復(fù)的熱門數(shù)據(jù)
function random_pick(list, target) {
/**
* @param {number[]} list - 數(shù)據(jù)
* @param {number} target - 獲取的條數(shù)
*/
// 1. 保存熱榜
let hot = [];
// 2. 保存熱榜的索引
for (let index = 0; index < list.length; index++) {
// 3. 如果熱榜采集完,則直接返回
if (hot.length >= target) return hots(hot);
// 4. 每次隨機(jī)取出一個(gè)數(shù)
let r = Math.floor(Math.random() * list.length);
// 5. 如果隨機(jī)數(shù)不在熱榜里,則加入熱榜
if (hot.indexOf(r) == -1) {
hot.push(r);
}
}
// 熱榜過濾函數(shù)
function hots(params) {
return params.map(item => { return list[item] });
}
}
let r = random_pick([22, 33, 44, 55, 66, 77, 88], 3)到此這篇關(guān)于JavaScript中隨機(jī)數(shù)方法 Math.random()的文章就介紹到這了,更多相關(guān)JS - Math.random() 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JS生成隨機(jī)數(shù)的多種方法匯總(不同范圍、類型的隨機(jī)數(shù))
- Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證
- Js生成隨機(jī)數(shù)/隨機(jī)字符串的方法小結(jié)【5種方法】
- JavaScript隨機(jī)數(shù)的組合問題案例分析
- js實(shí)現(xiàn)隨機(jī)數(shù)小游戲
- js控制隨機(jī)數(shù)生成概率代碼實(shí)例
- JavaScript生成指定范圍隨機(jī)數(shù)和隨機(jī)序列的方法
- javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié)
- JS隨機(jī)數(shù)產(chǎn)生代碼分享
- JavaScript中獲取隨機(jī)數(shù)的幾種方法小結(jié)
相關(guān)文章
原生JavaScript實(shí)現(xiàn)todolist功能
本篇文章給大家介紹了通過原生JavaScript實(shí)現(xiàn)todolist功能相關(guān)知識(shí)點(diǎn),對(duì)此有需要的朋友可以學(xué)習(xí)下。2018-03-03
layui問題之自動(dòng)滾動(dòng)二級(jí)iframe頁面到指定位置的方法
今天小編就為大家分享一篇layui問題之自動(dòng)滾動(dòng)二級(jí)iframe頁面到指定位置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
layer頁面跳轉(zhuǎn),獲取html子節(jié)點(diǎn)元素的值方法
今天小編就為大家分享一篇layer頁面跳轉(zhuǎn),獲取html子節(jié)點(diǎn)元素的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
基于JavaScript實(shí)現(xiàn)熔巖燈效果導(dǎo)航菜單
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)熔巖燈效果導(dǎo)航菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Bootstrap Tooltip顯示換行和左對(duì)齊的解決方案
小編在使用Bootstrap的Tooltip功能時(shí)遇到一些小問題,換行丟失,文字不是左對(duì)齊。下面小編給大家介紹下Bootstrap Tooltip顯示換行和左對(duì)齊的解決方案,感興趣的朋友一起看看吧2017-10-10
JS 頁面自動(dòng)加載函數(shù)(兼容多瀏覽器)
兼容多個(gè)瀏覽器的自動(dòng)加載函數(shù)。2009-05-05
將Datatable轉(zhuǎn)化成json發(fā)送前臺(tái)實(shí)現(xiàn)思路
將Datatable轉(zhuǎn)化成json可以將dt序列化成json,放到前臺(tái)的隱藏控件hidBoundary中,具體的實(shí)現(xiàn)如下,有類似需求的朋有可以參考下2013-09-09
基于js實(shí)現(xiàn)checkbox批量選中操作
這篇文章主要為大家詳細(xì)介紹了基于js實(shí)現(xiàn)checkbox批量選中操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11

