Javascript Math.random()

2019-01-15 21:08发布

Math.random() in javascript is able to return 1, right? Which means if I would be to use it to get a random index on my array the following code could fail:

var arr = [ 1, 2, 3 ],
    index = Math.floor(Math.random() * arr.length);

// index could be 3?
alert(arr[index]);

Could someone shed some light on this?

4条回答
仙女界的扛把子
2楼-- · 2019-01-15 21:27

The link you posted takes me to a site that says:

Returns a pseudo-random number in the range [0,1) — that is, between 0 (inclusive) and 1 (exclusive). The random number generator is seeded from the current time, as in Java.

"inclusive" means the value is part of the range, whereas "exclusive" means that the value is not part of the range.

So Math.random() returns a value from 0 to just-less-than 1.

查看更多
做自己的国王
3楼-- · 2019-01-15 21:28

No, it returns from 0 inclusive to 1 exclusive

See https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math/random

Note however the caveat in that page:

Note that as numbers in JavaScript are IEEE 754 floating point numbers with round-to-nearest-even behavior, these ranges, excluding the one for Math.random() itself, aren't exact, and depending on the bounds it's possible in extremely rare cases (on the order of 1 in 262) to calculate the usually-excluded upper bound.

For these purposes, though, you should be fine.

查看更多
冷血范
4楼-- · 2019-01-15 21:31

between 0 (inclusive) and 1 (exclusive) - cannot be 1

Your code is all right

查看更多
Evening l夕情丶
5楼-- · 2019-01-15 21:32

I am pretty sure the number returned by

Math.random()

is smaller than 1 but equal or greater than zero.

查看更多
登录 后发表回答