Javascript随机数生成器在范围内,低于和高于给定范围

时间:2018-04-27 17:56:36

标签: javascript html random numbers

我一直试图制作一个具有给定范围的随机数生成器,认为这很容易,然后没有任何逻辑推理,随机数不受任何方式影响给定的最大和最小范围。请帮忙。这是代码:

@objc func buttonTapped(sender: UITapGestureRecognizer? = nil) {
    self.parent!.view.endEditing(true)
}

4 个答案:

答案 0 :(得分:3)

您需要将Math.random()乘以范围的长度,而不是乘以范围中的最大值。



const getRandom = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
Array.from({ length: 20 }, () => console.log(getRandom(0, 2)));




答案 1 :(得分:1)

  1. document.getElementById("max").value是字符串,所以现在Math.random() * max + minfloat * string + string,它将最小值附加为字符串。 parseInt将解决此问题。
  2. Math.random() * max + min不正确。 Math.random() * (max - min + 1) + min是对的。

答案 2 :(得分:0)

添加一个代码块,用于检查生成的随机数是否落在指定的范围内。如果它没有循环通过随机数生成,直到条件测试失败;



function rand() {
  var max = document.getElementById("max").value;
  var min = document.getElementById("min").value;

  var output = document.getElementById("output");


  var random = Math.floor(Math.random() * max + min);

  while (random > max || random < min) {
    random = Math.floor(Math.random() * max + min);
  }

  output.value = random;

}
&#13;
.elements {
  text-align: center;
}

.random {
  margin-top: 100px;
  width: 275px;
  height: 200px;
  font-size: 50px;
  text-align: center;
}

.range {
  margin: 35px 25px;
  width: 100px;
  height: 100px;
  text-align: center;
  font-size: 30px;
}

.generate {
  margin-top: 50px;
  width: 250px;
  height: 35px;
  font-size: 20px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="elements">
  <input type="text" class="random" id="output">
  <br>
  <input type="button" class="generate" value="Generate random number" onclick="rand();">
  <br>
  <h1>Maximum Number</h1>
  <input type="text" class="range" id="max">
  <h1>Minimal Number</h1>
  <input type="text" class="range" id="min">
&#13;
&#13;
&#13;

之后,您可以将其值分配给输出。

答案 3 :(得分:0)

使用此代码:

// the initial seed
Math.seed = 6;

// in order to work 'Math.seed' must NOT be undefined,
// so in any case, you HAVE to provide a Math.seed
Math.seededRandom = function(max, min) {
    max = max || 1;
    min = min || 0;

    Math.seed = (Math.seed * 9301 + 49297) % 233280;
    return Math.floor(min + (Math.seed / 233280) * (max - min));
}
var res = Math.seededRandom(100,-100)
console.log(res)

或自己尝试

http://indiegamr.com/generate-repeatable-random-numbers-in-js/

相关问题