Adr*_*son 15 javascript random math
Javascript的MATH对象有一个随机方法,从set [0,1)0返回,包括1,exclusive.有没有办法返回一个包含1的真正随机方法.
例如
var rand = MATH.random()*2;
if(rand > 1)
{
rand = MATH.floor(rand);
}
return rand;
Run Code Online (Sandbox Code Playgroud)
虽然这总是从集合[0,1]返回一个数字,但它并不是真正随机的.
Tre*_*vor 14
这将返回[0,1]包含:
if(MATH.random() == 0)
return 1;
else
return MATH.random();
Run Code Online (Sandbox Code Playgroud)
说明:如果第一次调用random()返回0,则返回1.否则,再次调用random,这将是[0,1).因此,它将返回[0,1]全包.
它是否包含边界应该无关紧要; 事实上,严格来说,你要做的事情并没有多大意义.请记住,在连续概率分布下,获得特定值的概率无论如何都是无穷小的,所以从数学上讲,你永远不会看到1的确切值.
当然,在计算机世界中,RNG的分布并不是真正连续的,所以你"可能"会遇到一个特定的价值(无论这意味着什么),但事实上你依赖于一个限制实数存储的方式提示您解决您尝试解决的任何问题的方法存在的问题.
该Math.random函数返回0到1之间的随机数,其中0表示包含,1表示独占.这意味着在一个区间中将随机数正确分配为整数的唯一方法是使用独占上限.
要指定包含上限,只需向其中添加一个以使其在计算中独占.这将在7到12之间正确分配随机数,包括:
var min = 7;
var max = 12;
var rnd = min + Math.floor(Math.random() * (max - min + 1));
Run Code Online (Sandbox Code Playgroud)