js中利用Math.random()生成的时伪随机数,有其他办法可以生成0到23的真随机数吗(包括0和23)?
时间: 2024-01-24 22:18:19 浏览: 135
是的,JavaScript中的Math.random()生成的是伪随机数,但是可以使用真随机数生成器来生成0到23之间的真随机数。
一种方法是使用外部真随机数生成器API。例如,可以使用Random.org的API,该API提供了真正的随机数。您可以使用XMLHttpRequest向其API发送请求,并使用返回的随机数。
另一种方法是使用硬件随机数生成器。硬件随机数生成器是依赖于物理过程的设备,例如热噪声,放电噪声等。它们可以生成真正的随机数。在Web应用程序中,可以使用WebCrypto API中提供的硬件随机数生成器。
以下是使用Random.org API生成0到23之间的真随机数的示例代码:
```javascript
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.random.org/integers/?num=1&min=0&max=23&col=1&base=10&format=plain&rnd=new');
xhr.onload = function () {
if (xhr.status === 200) {
const randomNumber = parseInt(xhr.responseText);
console.log(randomNumber);
} else {
console.error('Error generating random number');
}
};
xhr.send();
```
请注意,这种方法需要从外部API获取真随机数,因此可能会受到网络延迟和其他问题的影响。
阅读全文