一、隨機數Js代碼
Js中生成隨機數的代碼有很多,包括Math庫的random、window.crypto.getRandomValues等等。其中,Math庫的random方法是最常用的。Math.random方法返回一隨機浮點數,範圍在[0, 1)之間(包括0, 不包括1),可根據需求將其映射為其他值。
// 生成隨機整數,範圍在[min, max] 之間 (包括min, max) function randomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
該函數可以輕鬆生成min到max範圍內的隨機整數。
二、隨機數表
隨機數表是一個預處理好的表格,包含了預先生成好的隨機數。通過使用這個表格,可以獲得大量隨機數而不需要每次都調用隨機數生成函數。這樣可以節省隨機數生成的時間。
// 隨機數表 const randomTable = [ 0.1234, 0.5678, 0.9012, 0.3456, 0.7890, ... ];
使用這個表格可以很快地獲得隨機數:
// 取出隨機數表中的一個隨機數 function getRandomFromTable() { return randomTable[Math.floor(Math.random() * randomTable.length)]; }
三、隨機數個數及總和不變Js
有時候,需要生成一組隨機數,這組隨機數的個數固定且總和不變。下面是一個使用Fisher-Yates shuffle算法生成的隨機數。該算法的優點是生成的隨機數順序較為隨機。
// 生成一組固定個數、總和不變的隨機數 function randomSumArray(sum, count) { let arr = []; for (let i = 0; i < count - 1; i++) { const randomNum = Math.floor(Math.random() * (sum / 2)); arr.push(randomNum); sum -= randomNum; } arr.push(sum); for (let i = 0; i < arr.length - 1; i++) { const j = Math.floor(Math.random() * (arr.length - i)); const temp = arr[j]; arr[j] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; } return arr; }
該方法使用了兩次循環,第一次循環生成了一個隨機數數組,第二次循環使用Fisher-Yates shuffle算法將數組順序打亂。最終,生成的隨機數數組中包含了指定個數的數值且總和不變。
四、隨機數函數
可以通過編寫自定義的隨機數函數來控制生成的隨機數。例如下面這個函數可以生成一組隨機數,可以設置隨機數們的總和、平均值、其中一個數值等等:
// 生成定製化的隨機數 function randomFactory({ sum, count, avg, max, min, target }) { let arr = []; let total = 0; for (let i = 0; i < count - 1; i++) { const maxNum = max || sum / 2; const minNum = min || 0; const randomNum = Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum; arr.push(randomNum); total += randomNum; } if (target) { const diff = target - total; arr.push(diff); } else if (sum) { const diff = sum - total; arr.push(diff / (count - 1)); } else if (avg) { const diff = avg * count - total; arr.push(diff / count); } else { arr.push(Math.floor(Math.random() * (max - min + 1)) + min); } return arr; }
可以通過傳入不同的參數來實現各種需要的隨機數生成。
五、隨機數列
有時候,需要生成一列符合某些條件的隨機數。例如下面這個函數可以生成一組隨機數列,每個數的範圍都是在前後兩個數之間。
// 生成符合條件的隨機數列 function randomSequence(count, min, max) { const arr = new Array(count); arr[0] = Math.floor(Math.random() * (max - min + 1)) + min; for (let i = 1; i < count - 1; i++) { arr[i] = Math.floor(Math.random() * (Math.min(arr[i-1], max) - min + 1)) + min; } arr[count-1] = Math.floor(Math.random() * (Math.min(arr[count-2], max) - min + 1)) + min; return arr; }
通過該函數可以輕鬆生成符合特定條件的隨機數列。
六、隨機數在線
有時候,需要在網頁上實時展示隨機數(例如在線抽獎),下面的代碼可以在網頁上實時生成隨機數展示。
// 在網頁上實時生成隨機數 document.getElementById('generateBtn').addEventListener('click', () => { const min = parseInt(document.getElementById('minInput').value); const max = parseInt(document.getElementById('maxInput').value); const GeneratedNumEl = document.getElementById('generatedNum'); GeneratedNumEl.innerHTML = Math.floor(Math.random() * (max - min + 1)) + min; });
通過該代碼可以在網頁上實現實時生成指定範圍內的隨機數。
七、隨機數的機制
隨機數生成的機制是偽隨機數生成器。由於計算機是可計算的,無法真正隨機,因此隨機數的生成使用了偽隨機數生成器。偽隨機數生成器是使用一些特定的種子作為輸入,採用一定的算法來生成隨機數。由於產生隨機數的算法是一致的,因此偽隨機數生成器生成的隨機數都是可以被預測的。可以通過修改種子值來使隨機數生成更為隨機。
八、Js生成隨機數
在JS中,可以使用Math庫中random方法生成隨機小數,通過映射也可以生成指定範圍的隨機數。以下是JS生成指定範圍內的隨機整數的代碼:
function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
九、Js生成1到99隨機數
生成1到99的隨機整數的代碼如下:
function getRandomFrom1to99() { return Math.floor(Math.random() * 99) + 1; }
上述代碼將生成1到99(包括1和99)之間的隨機整數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240050.html