在javascript中如何随机生成介于-0.5和0.5之间的数字?以下似乎只给出正数,没有负数.
Math.random(-0.15, 0.15)
Run Code Online (Sandbox Code Playgroud)
引用MDN Math.random,
该
Math.random()函数返回范围[0,1)中的浮点伪随机数,即从0(包括)到最多但不包括1(不包括)
因此,生成0到1之间的随机数,并从中减去0.5.
Math.random() - 0.5
Run Code Online (Sandbox Code Playgroud)
注意: Math.random()不期望任何参数.因此,您无法指定任何范围.
如果要在范围之间生成随机数,请使用MDN中的示例代码段,
// Returns a random number between min (inclusive) and max (exclusive)
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
Run Code Online (Sandbox Code Playgroud)
带范围的演示
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
function appendToResult(value) {
document.getElementById("result").innerHTML += value + "<br />";
}
document.getElementById("result").innerHTML = "";
for (var i = 0; i < 10; i += 1) {
appendToResult(getRandomArbitrary(-0.35, 0.35));
}Run Code Online (Sandbox Code Playgroud)
<pre id="result" />Run Code Online (Sandbox Code Playgroud)
这是因为,表达式
Math.random() * (max - min) + min
Run Code Online (Sandbox Code Playgroud)
将按以下方式评估.第一,
Math.random()
Run Code Online (Sandbox Code Playgroud)
将被评估以获得0和1范围内的随机数,然后
Math.random() * (max - min)
Run Code Online (Sandbox Code Playgroud)
它将乘以max和min值之间的差值.在你的情况,可以说max是0.35和min是-0.35.所以,max - min成为0.7.所以,Math.random() * (max - min)给范围内的数量0和0.7(因为即使Math.random()产生1,当你与它相乘0.7,结果会变成0.7).然后,你这样做
Math.random() * (max - min) + min
Run Code Online (Sandbox Code Playgroud)
所以,对于你的情况,这基本上变成了,
Math.random() * (0.35 - (-0.35)) + (-0.35)
(Math.random() * 0.7) - 0.35
Run Code Online (Sandbox Code Playgroud)
因此,如果(Math.random() * 0.7)生成任何大于的值0.35,因为0.35从中减去它,它将变为0和之间的某个数字0.35.如果(Math.random() * 0.7)生成的值小于0.35,则因为0.35从中减去该值,它将变为-0.35和之间的数字0.
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |