math.random一直给我0

时间:2016-11-28 15:16:27

标签: javascript node.js function

我偶然发现了这个问题,而不是给我最小,最大的随机数,它每次给我0!在此特定时刻,min为0(被动),max为1.02

我的主app.js文件中的变量:

var randomTicket = helper.getRandomInt(0, g_Totalcost);

这是辅助函数:

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

2 个答案:

答案 0 :(得分:0)

尝试强制转换(或转换为浮点值)参数g_Totalcost

 var randomTicket = helper.getRandomInt(0, parseFloat(g_Totalcost));

或者,转换函数的参数:

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

答案 1 :(得分:0)

我认为您需要添加某种验证来防止非整数输入,否则该函数将无法按预期运行。

我的猜测是你忘记了函数开头的以下几行:

sh: eb_server.js: command not found 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

以下是一些支持性分析。

min = Math.ceil(min);
max = Math.floor(max);

简化为

return Math.floor(Math.random() * (1.02 - 0 + 1)) + 0;

Math.random()返回0(包括)和1(不包括)之间的数字

因此,让我们根据Math.random()的值计算一些不同的可能结果。

  • 对于Math.random()== 0,结果为0
  • 对于Math.random()== 0.45,结果为0
  • 对于Math.random()== 0.4999,结果为1
  • 对于Math.random()== 0.5,结果为1
  • 对于Math.random()== 0.9,结果为1
  • 对于Math.random()== 0.99,结果为1
  • 对于Math.random()== 0.999,结果为2
  • 对于Math.random()== 0.9999999999999999,结果为2