Flash AS3随机功能,例如0-9,例外3

时间:2011-03-17 21:39:21

标签: actionscript-3 math random

我想知道如何创建一个Math.random()函数,或类似的东西,它选择0-9的数字。但随着程序的进展,将出现另一个随机变量。那个随机值是我想从0-9比例中删除的。 (另一个随机变量也是0-9)

4 个答案:

答案 0 :(得分:1)

Math.random()返回0-1的数字

function randomNum( modifier:int ):Number{
    return Math.floor(Math.random()*(9-modifier));
}

新编辑的代码
传递要从中获取元素的数组,它将返回randomed元素的值。 使用seedArray.splice(0,1);在这种情况下,从数组中删除元素将是第一个元素。

var seedArray:Array = [10,1000,20,245,874687,57,3456];
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )

    function randomElement( arr:Array ):Number{
      var rand:int = Math.floor(Math.random()*arr.length)
      return arr[rand];
    }

答案 1 :(得分:0)

这应该有效

private function zeroToNineExcept(toExclude:int):int{
    var retVal: int = -1;
    if(toExclude < 0 || toExclude > 9) {
        //trace a message, throw an argument error, ...
        return retVal;
    }
    while(retVal = Math.round(Math.random() * 9)){
        if(retVal == toExclude){ 
            continue;
        }else{ 
            return retVal;
        }
    }
}

答案 2 :(得分:0)

此函数将获得一个随机数组元素。然后将该元素拼接出数组并返回元素的值。返回值和结果数据类型是唯一需要更改的内容。

private function getRandomArrayElement(arr:Array):string
{
    var index:int = Math.floor(Math.random() * arr.length);
    var result:string = arr[index];
    arr.splice(index, 1);

    return result;
}

如果你想维护数组中的数据并返回一个随机数组,这将有效。

private function randomizeArray(arr:Array):Array
{
    var result:Array = [];

    while (arr.length > 0)
    {
        result.push(arr.splice(Math.floor(Math.random() * arr.length), 1));
    }

    return result;
}

我的测试数据如下。

var testArray:Array = ["Hi", "Bye", "Okay", "Yes", "No", "Maybe", "Sometimes", "Anywhere", "You said it!"];

答案 3 :(得分:0)

我认为最好先做随机化:

var randomValues:Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
randomValues.sort(function(a:int, b:int):int {return Math.random() < 0.5 ? -1 : 1});

在初始化之后,randomValues.pop()将从数组中获取未使用的值。