如何获取尚未选中的数字

时间:2013-12-08 22:10:01

标签: actionscript-3

如何使函数返回与上一次返回不同的数字,直到它返回所有提供的数字为止。

我有这个功能(在最大和最小之间返回一个随机数),我每秒都调用它:

private function randomNumber(maxNumber:int, minNumber:int = 0):int
    {
        return Math.floor(Math.random() * (1 + maxNumber - minNumber) + minNumber);
    }

假设第一次返回数字 2 。第二次必须返回 1 3 4 ,并说它返回 4 。第三次必须返回 1 3 ,并说它返回 1 。最后,除了1之外没有任何东西可以返回,它会返回它。

我怎么做到这样我只得到一次,直到我得到所有这些。 当发生这种情况时,我可以重置该功能,这样我就可以再次获得从 1 4 的随机数。并无限期地重复这一点。

1 个答案:

答案 0 :(得分:1)

因为它需要记住已经选择了哪些项目,所以您需要存储所选的数字以检查它们。所以,我认为这不会生活在一个独立的功能中。

一种解决方案是创建一个包含您要选择的值的数组,以及一个已选择的值的数组:

var nums:Array = [ 1, 2, 3, 4 ];
var selected:Array = [];

然后,在新功能中,您将所选数字添加到选定的数组中,同时返回它们:

function getNextRandomNum() {

    do {
        // select a random item from the *nums* array
        var index = randomNumber(nums.length - 1);
        var num = nums[index];

    // loop until the number does not appear in the *selected* array
    } while (selected.indexOf(num) != -1)

    // add number to *selected* array
    selected.push(num);

    // reset *selected* array if it's the same length as the *nums* array
    if (selected.length == nums.length) {
        selected = [];
    }

    return num;

}