Actionscript 3 生成2个数字,总和至少为10

Actionscript 3 生成2个数字,总和至少为10,actionscript-3,while-loop,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);

我试图在我的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);
}
var优先:uint=0;
第二个变量:uint=0;

而(第一+第二除非你试图一秒钟做上千次,否则这很好。在我脑子里,我想不出另外一种方法来做这件事而不损害(伪)随机性的完整性


编辑:我的观点是正确的,我认为Jongware的答案就是你想要的答案。

看起来你的第一个和第二个数字从0变为9,而脱离循环的最低需要是10

你可以做的是生成你的第一个数字,找到超过你要求的第二个数字10的最小值。然后在上面添加另一个随机数。这样,即使第二个添加的随机数是0,也可以保证添加到10

此外,对于第一个数字,您需要确保它至少为1或更大,就像两个数字中的任何一个为0一样,另一个必须为10才能相加为10,这将打破您对数字从0到9的要求

第二个数字的随机范围也需要考虑不超过9的可能性有多大

就在我脑海中(没有明确测试):


首先生成
first
然后生成
second=10-first+random(10-first)
。看起来Jongware在他的评论中击败了我>>谢谢你。我确信每次生成一个随机数在99%的情况下都有效,但在100%的情况下都有效。谢谢你的评论,而不是把代码扔给我。
// 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));