一、隨機數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-tw/n/240050.html
微信掃一掃
支付寶掃一掃