javascript - Math.random() 可靠吗?
问题描述
我正在使用 Math.random 为我的项目生成速度,但我的函数似乎返回有偏差的数字。
这是我的随机函数。它生成一个从 -1 到 1 的值。
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);
推荐阅读
- php - 如何在 laravel 中以一对一的关系更新?
- python - 无法在 udf 函数中使用 numpy
- python - 使用列值的热图相关性?
- nativescript - 如何在 nativescript 的 exoplayer 插件中显示全宽视频?
- microservices - 用于资源列表的微服务架构中的基于属性的访问控制 (ABAC)
- mysql - mysql更新查询耗时过长
- ruby - 如何使用多对多连接表比较边缘类的 ID 的真实性
- sql - SQL DimCalendar 日历 5-4-4 的动态会计周
- c++ - 是否可以在 Electron 应用程序中渲染由 Boost GIL 创建的图像?
- javascript - 比较和计算可变日期?