首页 > 解决方案 > Math.random() 可靠吗?

问题描述

我正在使用 Math.random 为我的项目生成速度,但我的函数似乎返回有偏差的数字。

这是我的随机函数。它生成一个从 -1 到 1 的值。

x_velocity += ((Math.random() * 2) - 1);
y_velocity += ((Math.random() * 2) - 1);

代码结果

如图所示,速度不是随机的。它们应该分散在整个圆圈中,但它们会向左上角移动。此行为在刷新后继续。

编辑:我发现了错误。稍后在程序中,我将粒子编辑为向上移动以进行调试,但忘记删除该部分。

标签: javascriptrandom

解决方案


圆形采样中的均匀性如何

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);

推荐阅读