有人可以向我解释一起使用的 Math.random() 和宽度/高度吗?

Posted

技术标签:

【中文标题】有人可以向我解释一起使用的 Math.random() 和宽度/高度吗?【英文标题】:Can someone explain Math.random() and width/height used together to me? 【发布时间】:2014-09-10 12:29:16 【问题描述】:

例如,我正在尝试编写有关绘图的代码。必须初始化 x 和 y 位置,以便在窗口中绘制整个图形:

int x = (int) (width * Math.random() * 0.75);
int y = (int) (heigth * Math.random() * 0.75);

图形的大小不能大于窗口宽度的1/8:

int figureWidth = (int)(x * 0.29);
int figureHeight = (int)(y * 0.29);

为什么将宽度与 Math.random() 和 0.75 相乘? 0.75 和 0.29 从何而来? 在什么情况下会考虑 getWidth()/getHeight() ?有人可以指出一些资源的方式来帮助我了解更多信息或在这里解释吗?谢谢。

【问题讨论】:

它错了。需要 1.0/8.0 而不是 0.75*0.29 您可能需要先阅读 Math.random() javadoc。它返回 0 到 1 之间的分数。所以我认为 x 和分别不超过宽度和高度。 0.75和0.29我认为只是一个百分比,所以这个数字不会填满整个窗口。 你的意思是:int figureWidth = (int)(width * Math.random() * 0.125); ? 【参考方案1】:

Math.random() 返回一个带正号的双精度值,大于或等于 0.0 且小于 1.0。所以根据代码,x 和 y 是随机取的,小于窗口大小的 75%,然后进一步减少到 29% 以给出 figureWidth 和 figureHeight。 根据我的说法,这一切都错了,我认为您希望屏幕上的随机坐标为 x 和 y,大小为 figureWidth 和 figureHeight。

所以大小应该计算为

int figureWidth = (int)(width * 0.29);
int figureHeight = (int)(height * 0.29);

但它将占屏幕的 29%,对于 25% 使用 0.25 而不是 0.29。

【讨论】:

但为什么要乘以宽度 * Math.random()? /int width = drawPanel.getWidth() 没错! - 所以 0.29 只是一个随机数,比如 35% 或 33%?因为我认为0.29和窗口宽度的1/8有关?! 这里不是随机的,而是静态的。

以上是关于有人可以向我解释一起使用的 Math.random() 和宽度/高度吗?的主要内容,如果未能解决你的问题,请参考以下文章

有人可以向我解释或将我链接到一个很好的指南,该指南解释了让和在 Haskell 中的位置 [关闭]

有人可以向我解释如何使用我的代码解决下面的参数错误吗?

有人可以向我解释为啥这是可能的吗? [复制]

有人可以简单地向我解释啥是有向无环图吗?

有人可以向我解释一下:'create(email: emailArg = ) '吗?

有人可以向我解释为啥 L(长)必须在那里吗? [复制]