区间

时间:2015-12-28 22:08:26

标签: javascript random

它没有给出给定范围内的值r?为什么呢?

function getRandomIntInclusive(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

var x = window.prompt("minimo");
var y = window.prompt("maximo");
var r = getRandomIntInclusive(x,y);

console.log(r);

编辑:此功能取自a link of dev mozilla 谢谢

5 个答案:

答案 0 :(得分:1)

window.prompt正在返回一个字符串,所以当你添加min(+ min)时,你会得到字符串连接而不是添加。一个简单的解决方案是将window.prompt的结果转换为数字:

function getRandomIntInclusive(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

var x = parseInt( prompt("minimo"), 10 );
var y = parseInt( prompt("maximo"), 10 );
var r = getRandomIntInclusive(x,y);

console.log(r);

答案 1 :(得分:1)

prompt返回一个字符串,您需要将这些字符串解析为整数:

 function getRandomIntInclusive(min, max) {
   return Math.floor(Math.random() * (max - min + 1)) + min;
 }
 var x = parseInt(window.prompt("minimo"), 10);
 var y = parseInt(window.prompt("maximo"), 10);
 var r = getRandomIntInclusive(x, y);
 console.log(r);

答案 2 :(得分:0)

使用parseInit()将字符串转换为整数

function getRandomIntInclusive(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

var x = window.prompt("minimo");
var y = window.prompt("maximo");
var r = getRandomIntInclusive(parseInt(x),parseInt(y));

alert(r);

答案 3 :(得分:0)

问题是javascript没有将值视为数字,而是将它们视为字符串。

以下代码应该让您开始解决此问题,但请注意,如果传入错误值,它可能会出错:

function getRandomIntInclusive(min, max) {
  min = parseFloat(min);
  max = parseFloat(max);
  return Math.floor(Math.random() * ((max - min) + 1)) + min;
}

工作小提琴:enter image description here

答案 4 :(得分:-1)

尝试:min + Math.floor(Math.random()* max)