Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 闪存AS3随机函数,0-9,例如3除外_Actionscript 3_Math_Random - Fatal编程技术网

Actionscript 3 闪存AS3随机函数,0-9,例如3除外

Actionscript 3 闪存AS3随机函数,0-9,例如3除外,actionscript-3,math,random,Actionscript 3,Math,Random,我想知道如何生成Math.random()函数,或者类似的函数,它从0-9中选择一个数字。但随着程序的进行,另一个随机变量将出现。这个随机值就是我想要从0-9刻度中删除的。(另一个随机变量也是0-9)Math.random()返回0-1之间的数字 function randomNum( modifier:int ):Number{ return Math.floor(Math.random()*(9-modifier)); } 新编辑的代码 传递要从中获取元素的数组,它将返回随机元素的

我想知道如何生成Math.random()函数,或者类似的函数,它从0-9中选择一个数字。但随着程序的进行,另一个随机变量将出现。这个随机值就是我想要从0-9刻度中删除的。(另一个随机变量也是0-9)

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

function randomNum( modifier:int ):Number{
    return Math.floor(Math.random()*(9-modifier));
}
新编辑的代码
传递要从中获取元素的数组,它将返回随机元素的值。 使用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];
    }
这应该行得通

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;
        }
    }
}
私有函数zerotonieexcept(toExclude:int):int{
var-retVal:int=-1;
如果(排除<0 | |排除>9){
//跟踪消息,抛出参数错误。。。
返回返回;
}
while(retVal=Math.round(Math.random()*9)){
如果(retVal==toExclude){
继续;
}否则{
返回返回;
}
}
}

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

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!"];

我认为最好先进行随机分组:

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});
varrandomValues:Array=[0,1,2,3,4,5,6,7,8,9];
sort(函数(a:int,b:int):int{return Math.random()<0.5?-1:1});

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

您能分享一下您迄今为止尝试过的示例吗?
Math.floor(Math.random()*10)
thenas 1*10=10这不是他要求的不起作用的值。我试过了。问题是。。。当我使用:函数randomNum(修饰符:int):Number{return Math.floor(Math.random()*(9-modifier));}时,我得到一个介于0-4之间的数字。但我需要那个随机函数从数组中选取一个数字。每次按下按钮时,我都要删除数组的1个索引。所以,如果我使用这个函数,我突然锁定了5个索引,而不是作为修饰符的索引。简而言之:当我删除索引时,我需要一个仍然可以选择数组的随机函数。你没有提到从数组中选择。给我5分钟,我不确定。我的是这样的:数组是0-9创建的。var rand:int=Math.floor(Math.random()*9);question.text=theArray[rand]在每次按下按钮之间,我要做的是拼接数组的一个索引,并且仍然使“rand”用于打印有关问题的文本。(我的数组的keep text)@Kasper-所以你需要以随机顺序返回9个项目,每个项目只能返回一次&因此我不能从数组中得到两次相同的问题?对于第二个项目,你将使用额外的数组。someArray=RandomizArray(带有myString的数组)然后您可以在someArray上执行所有操作,因为它现在是随机的。您的原始数组没有混乱,数据以其原始形式保留,以便以后使用。(当您准备再次随机分组并重新开始过程时)。我希望这是有意义的。如果你不必保证原始数据的安全,你可以只做myArray=randomize(myArray),它将为你混合数组。。。。。。。哦,不,它不会给你同样的问题两次。一旦你将数组随机化,你就可以通过它们了。myArray[0][1]等,它们将以随机顺序排列。