假设我在函数中有类似下面的内容,第一次调用它时,我有一个随机值,但每隔一次调用它,我得到的数字与它第一次吐出的数字相同。我可以做些什么来确保每次调用它时都是随机的?
if (Cosmo.hitTestObject(Asteroid5))
{
Asteroid5.y = (Math.random() * 20 - 5);
Asteroid5.x = (Math.random() * 20 - 15);
Asteroid5.x = Asteroid5.x + (Math.random() * 20 - 15);
Asteroid5.y = Asteroid5.y + (Math.random() * 20 - 5);
}
答案 0 :(得分:1)
[根据以下评论编辑] Math.random()的AS3参考页面说:
返回伪随机数n,其中0 <= n <1。这个号码 返回是以未公开的方式计算的,并且是 “伪随机”因为计算不可避免地包含一些 非随机性的元素。
如果您想使用基于种子的伪随机数生成器,这可以帮助您:
http://www.kirupa.com/forum/showthread.php?365564-AS3-Seeded-Pseudo-Random-Number-Generator
答案 1 :(得分:0)
在你的前两个陈述中,看起来你正在使用Asteroid5.y&amp; Asteroid5.x作为变量。所以一个想法是使用正确类型的变量(我假设它的号码):
var rndX:Number = (Math.random() * 20 - 15);
var rndY:Number = (Math.random() * 20 - 5);
var rndX2:Number = rndX + (Math.random() * 20 - 15);
var rndY2:Number = rndY + (Math.random() * 20 - 5);
Asteroid5.x = rndX2;
Asteroid5.y = rndY2; or
var rndX:Number;
var rndY:Number;
for ( var i:uint=0; i<2; i++ )
{
rndX += (Math.random() * 20 - 15);
rndY += (Math.random() * 20 - 5);
}
Asteroid5.x = rndX;
Asteroid5.y = rndY;
现在,您可以在调试模式中逐步执行代码,并确切了解变量值发生了什么变化。也许可以搜索你的代码&#39; Asteroid5.x =&#39; &安培; &#39; Asteroid5.y =&#39; &安培; &#39; Asteroid5.y =&#39; &安培; &#39; Asteroid5.x =&#39;