一、随机数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)之间的随机整数。