JavaScript中隨機數方法 Math.random()
前言:
我們學習項目的時難免遇到一些問題,比如;遇到一個功能需要隨機返回多條不重復的數據,也可以是拿瞭就用,下次再需要時已經忘記如何使用瞭;雖然接觸使用的場景很少,但也有必要單獨拿出來講一講
定義
js中的生成隨機數操作是基於 Math
方法下的 random()
方法
Math.random() : 隨機獲取范圍內的一個數 ( 精確到小數點後14位 )
基礎寫法
隨機生成一個 0 ~ 1 之間的數:
// 語法: Math.random()
生成指定范圍內的隨機數
生成 小於 m 的隨機數(含小數):
// 語法: Math.random() * m Math.random() * 60
生成 小於m 的整數:
可以使用 parseInt
去除小數點的形式將生成的隨機數轉換為整數
// 語法: Math.random() * m parseInt(Math.random()* 60)
生成向下取整的隨機整數:
使用Math
方法下的floor
屬性進行舍棄小數向下取整, 當然你也可以使用 Math.ceil
向上取整
// 語法: Math.random() * m Math.floor(Math.random()* 60)
生成兩個數之間的隨機數
表示生成 n~m+n 之間的隨機數:
// 語法: Math.random() * m + n // 范圍:n ~ m+n Math.random() * 10 + 8 // 8 ~ 18
生成 -n~m+n 之間的隨機數:
// 語法: Math.random() * m - n // 范圍:-n ~ m+n Math.random() * 10 - 8 // -8 ~ 2
生成 -m~0 之間的隨機數:
// 語法: Math.random() * m - m // 范圍:-m - 0 Math.random() * 10 - 10 // -10 - 0
生成 n~m 之間的隨機整數(包括n與m):
// 語法: Math.floor(Math.random() * (m - n)) + n // 范圍:n ~ m Math.floor(Math.random() * (8 - 100)) + 100 // 8~100
常用場景
看完語法,接下來講一個我項目中用到的場景 – 熱榜,將每次隨機獲取3條不重復的熱門數據
function random_pick(list, target) { /** * @param {number[]} list - 數據 * @param {number} target - 獲取的條數 */ // 1. 保存熱榜 let hot = []; // 2. 保存熱榜的索引 for (let index = 0; index < list.length; index++) { // 3. 如果熱榜采集完,則直接返回 if (hot.length >= target) return hots(hot); // 4. 每次隨機取出一個數 let r = Math.floor(Math.random() * list.length); // 5. 如果隨機數不在熱榜裡,則加入熱榜 if (hot.indexOf(r) == -1) { hot.push(r); } } // 熱榜過濾函數 function hots(params) { return params.map(item => { return list[item] }); } } let r = random_pick([22, 33, 44, 55, 66, 77, 88], 3)
到此這篇關於JavaScript中隨機數方法 Math.random()的文章就介紹到這瞭,更多相關JS – Math.random() 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JavaScript內置對象Math與String詳細介紹
- JavaScript 中的單例內置對象Global 與 Math
- 梳理總結25JavaScript數組操作方法實例
- 基於JavaScript編寫一個翻卡遊戲
- javascript Number 與 Math對象的介紹