【问题标题】:How can I generate a user-specified quantity of random numbers using JavaScript?如何使用 JavaScript 生成用户指定数量的随机数?
【发布时间】:2015-06-23 16:27:50
【问题描述】:

我必须创建一个程序来提示用户进行选择。一旦他们输入数字,它应该生成该数量的随机数或整数。随机整数必须在 1 到 25 之间。最后,程序应该给出一个输出,说明这些随机生成的整数中的最大数。有谁知道如何做到这一点?我在挣扎。非常感谢。

【问题讨论】:

标签: javascript random


【解决方案1】:

尝试使用 Math.random() 命令。它生成一个随机数。

<p>Using the Math.Random command, a random number will display when the button is clicked!</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    document.getElementById("demo").innerHTML = Math.random() * 25 + 1;
}
</script>

要使其介于 1 和 25 之间,只需将 myFunction() 的结果乘以 25。

【讨论】:

  • 这并不能完全回答问题,您确实应该使用抽象事件处理(内联是不好的做法)。另外,由于您没有修改 HTML,因此应将 innerHTML 替换为 textContent
  • 发布一个无法解释的解决方案,并且 OP 没有表现出他的努力
  • "要使其介于 1 和 25 之间..." 乘以 24 并加 1 或乘以 25,加 1 和 floor(否则可能仍有 0 和1).
【解决方案2】:

这是您可以采用的通用方法,以函数的形式:

var generateRandomNumbers = function(count, max) {
  var numbers = [];
  var lowest = max;
  var highest = 0;
  for (var i = 0; i < count; i++) {
    var number = Math.floor(Math.random() * max) + 1;
    if (number > highest) {
      highest = number;
    } else if (number < lowest) {
      lowest = number;
    }
    numbers.push(number);
  }
  return {numbers: numbers, lowest: lowest, highest: highest};
};

它返回一个具有 3 个键的对象 - 随机数数组以及最高和最低值。所以...

var data = generateRandomNumbers(100, 25);
data.numbers; // Array of 100 random numbers between 1-25
data.lowest; // Lowest value of all of the randoms
data.highest; // Highest value of all of the randoms

【讨论】:

  • 请记住,Math.round 在处理随机数时通常是错误的,它会创建非均匀分布。如果max 是 5,那么您将只有 1/8 的时间得到 1 和 5,因为您的搜索空间只有 4! Math.floor(Math.random() * max) + 1 应该可以正常工作。这是一个测试脚本:var numbers = {}, rand, max = 5; for (var i = 0; i &lt; 10000; i += 1) { rand = 1 + Math.floor(Math.random() * (max - 1)) + 1; numbers[rand] = numbers[rand] ? numbers[rand] + 1 : 1; } console.log(numbers);
  • 这是一个不错的建议 :) 我将更新我的示例。因为晚饭在桌上,所以匆匆写下。
  • 为什么Math.min 在那里? Math.random() 只会生成介于 00.9999999... 之间的数字(所以永远不会出现 1,但可能会出现 0)
  • 哈!我......没有意识到上限是排他性的。哦!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 2021-01-10
  • 2015-05-23
相关资源
最近更新 更多