Javascript:Math.random

时间:2012-10-14 18:17:55

标签: javascript math

如果num参数为52,那么有多少可能的返回值?是52还是53?如果我理解正确,Math.random使用从0到1的随机值。如果是,那么0是可能的返回值,因此是52.这导致53个可能的返回值。它是否正确?我问的原因是我正在学习的一本书使用这个代码作为一副纸牌。我想知道num是否应该等于51?

谢谢...

function getRandom(num) {
    var my_num = Math.floor(Math.random * num);
    return my_num;
};

3 个答案:

答案 0 :(得分:12)

Math.floor(Math.random() * num) // note random() is a function.

这会将所有整数从0(包括0)返回到num(不包括num)。

Math.random返回0(包括)和1(不包括)之间的数字。将结果乘以X可以得到0(包括)和X(不包括)。添加或减去X会将范围移动+ -X。

以下是MDN的一些方便功能:

// Returns a random number between 0 (inclusive) and 1 (exclusive)
function getRandom() {
  return Math.random();
}

// Returns a random number between min and max
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

// Returns a random integer between min and max
// Using Math.round() will give you a non-uniform distribution!
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

答案 1 :(得分:3)

由于Math.random返回[0,1)之间的实数(1 包含在内),所以将结果相乘会返回[0, 52)之间的实数

由于您对结果进行了分类,因此返回的最大数量为51,并且有52个不同的值(计为0)。

答案 2 :(得分:2)

由于Math.random的值从0变为1(不包括); 因此,如果您在getRandom中传递52,则返回值将在0到52之间变化(不包括)。所以getRandom只能返回52个值。因为你正在使用Math.floor。可以返回的最大值是51.