我正在尝试在Actionscript / Flash游戏中生成两个随机数字(数字0-9)。但是,它们必须加起来至少为10(这是游戏的一部分,否则游戏将毫无意义,如果需要,我可以解释为什么)。这是我目前的方法:
var first:uint=0;
var second:uint=0;
while(first+second<10)
{
first=Math.floor(Math.random()*10);
second=Math.floor(Math.random()*10);
}
但是,我担心while()循环可能会持续很长时间(就像解析器每次生成1一样)。这是不可能的,但可能的。有没有更好的方法呢?
看起来您的第一个和第二个数字从0到9,而退出循环的最低要求是10。
相反,您可以做的是生成您的第一个数字,找到超过第二个数字10所需的最小值。然后在顶部添加另一个随机数。这样,即使第二个添加的随机数为0,也可以保证总计为10。
另外,对于第一个数字,您需要确保其至少为1或更大,就像两个中的任何一个为0一样,另一个必须为10才能累加为10,这将破坏您对数字从0到9。
第二个数字的随机范围还需要考虑不超过9的大小。
就在我的头顶上(没有明确测试一下):
// first number goes from 1 to 9
var first:int = 1 + Math.floor(Math.random() * 9);
var second:int = 10 - first;
// On the second number, add a random value on top, taking care not to go over 9
second += Math.floor(Math.random() * (9 - second));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句