生成2位数,加起来至少10

时间:2014-01-26 02:28:45

标签: actionscript-3 while-loop

我正在尝试在我的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一样)。这不太可能,但可能。对此有没有更好的方法?

2 个答案:

答案 0 :(得分:2)

看起来你的第一个和第二个数字从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));

答案 1 :(得分:0)

除非你试图每秒数千次这样做,否则这很好。在我的头脑中,我无法想到另一种方法,在不损害(伪)随机性的完整性的情况下做到这一点。

编辑:我纠正了,我认为Jongware的答案是你正在寻找的答案。