📜  没有 rand 函数的随机数 - Javascript (1)

📅  最后修改于: 2023-12-03 15:11:03.911000             🧑  作者: Mango

没有 rand 函数的随机数 - Javascript

在 Javascript 中,我们通常使用 Math.random() 函数来生成随机数。但是,如果我们没有 rand 函数,该怎么办呢?本文将介绍两种不同的方法来生成随机数。

方法一:使用时间戳作为种子

我们可以使用时间戳作为种子来生成随机数。时间戳是从 1970 年 1 月 1 日开始的毫秒数。由于时间戳在每毫秒内都不同,使用时间戳作为种子可以生成不同的随机数。

function generateRandomNumber() {
  var timeStamp = new Date().getTime();
  var randomNumber = Math.floor(Math.random() * timeStamp);
  return randomNumber;
}

在这个函数中,我们使用 new Date().getTime() 来获取当前时间戳,然后通过乘以 Math.random() 中的一个小数来生成随机数。最后,我们将随机数向下取整,并返回它。

方法二:使用递归

另一种方法是使用递归来生成伪随机数。这需要一个初始值和一个递归函数。随着每次递归,初始值将不断变化,从而生成不同的随机数。

function generateRandomNumber(seed) {
  function recursiveRandom(seed) {
    var x = Math.sin(seed++) * 10000;
    return x - Math.floor(x);
  }
  return recursiveRandom(seed);
}

在这个函数中,我们定义了一个递归函数 recursiveRandom。在这个函数中,我们使用了一个常见的伪随机数算法,即 Random Number Generator(RNG)。该 RNG 算法使用 Sine 函数和种子值来生成伪随机数。当我们调用该函数时,它将返回一个当前种子的随机数,并将种子值 +1 以进行下一次递归。

结论

这两种方法都可以用来生成随机数,但使用时间戳的方法可能更靠谱一些。但是要注意,这里生成的随机数都是伪随机数,因为它们都是通过某种算法得出的,而不是真正的随机数。

希望这篇文章对您有所帮助!