Javascript 数学是可靠的吗?
我正在使用Math.random为我的项目生成速度,但我的函数似乎返回了有偏差的数字 这是我的随机函数。它生成一个从-1到1的值Javascript 数学是可靠的吗?,javascript,random,Javascript,Random,我正在使用Math.random为我的项目生成速度,但我的函数似乎返回了有偏差的数字 这是我的随机函数。它生成一个从-1到1的值 x_velocity += ((Math.random() * 2) - 1); y_velocity += ((Math.random() * 2) - 1); 如图所示,速度不是随机的。它们应该分散在整个圆圈中,但它们朝左上方移动。此行为在刷新后继续 编辑:我发现了错误。稍后在程序中,我编辑粒子向上移动以进行调试,但忘记删除该部分。均匀圆内采样如何 let r
x_velocity += ((Math.random() * 2) - 1);
y_velocity += ((Math.random() * 2) - 1);
如图所示,速度不是随机的。它们应该分散在整个圆圈中,但它们朝左上方移动。此行为在刷新后继续
编辑:我发现了错误。稍后在程序中,我编辑粒子向上移动以进行调试,但忘记删除该部分。均匀圆内采样如何
let r = Math.sqrt(Math.random());
let phi = 2.0*Math.PI*Math.random();
let x_velocity = r*Math.cos(phi);
let y_velocity = r*Math.sin(phi);
分散在整个圆中并不意味着随机。您的值出现在具有方形边框的区域中。如何将它们映射到一个圆?我怀疑你的映射算法有缺陷。此外,您正在
+=
计算速度;它们的基本值是什么?它们的基本值是零。Math.random生成一个介于-1和1之间的值,并将其添加到x和y速度中。然后将x和y速度添加到点的x和y坐标。@BrianNguyen这些值是什么时候添加的?在requestAnimationFrame
中重复?只有一次?@BrianNguyen那么我不能在Chrome或Firefox上重现这种行为。请回答您的问题,并提供一个演示该问题的示例。它不需要包含所有花哨的颜色,只需要最小值就可以理解为什么速度会这样。到目前为止的提示和答案有帮助吗?@user4642212观点正确,答案已编辑