我在数学上非常糟糕,所以我无法弄清楚为什么这不起作用。它应该计算0到360之间的随机数。
var minDegree:int = 0
var maxDegree:int = 360
function randomDegree (minDegree:Number, maxDegree:Number):Number
{
return (Math.random() * (maxDegree - minDegree + minDegree));
trace(randomDegree)
}
答案 0 :(得分:1)
我假设你真的想要整数,对吗?这是实际的代码:
private function randRange(minNum:Number, maxNum:Number):Number
{
return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
}
我发布它是因为@ Xenophage的答案不正确。并且它是不正确的,因为Math.random 返回一个伪随机数n,其中0 <= n&lt; 1。(reference)。这意味着,如果您将0
作为最小值并360
作为最大值,那么您可以获得的最大数字是359,因为:
(Math.random() * (maxDegree - minDegree) + minDegree);
(0.99999 * (360 - 0) + 0) = 359
所以上层解决方案会更好用:)如果你不是在寻找整数 - 请告诉我。
编辑:我已经随机返回更准确的数字,好像它只是0.99它会计算到354而不是359.这两种方式都不会达到360。
是的,我知道你需要学位,所以0
类似于360
如果你没有做一些精确的计算,但我不得不提到它,因为它是Math.random
问题,而不是学位问题。
答案 1 :(得分:0)
你非常接近,将右括号移动一点。乘以max和min之间的差值,然后再加上min,将值恢复到适当的范围。我发现使用简单的计算器尝试一些例子很容易,看看结果是否有意义。
var minDegree:int = 0
var maxDegree:int = 360
function randomDegree (minDegree:Number, maxDegree:Number):Number
{
return Math.min(maxDegree, Math.random() * (maxDegree - minDegree) + minDegree + .01);
}
trace(randomDegree(minDegree, maxDegree));