我想知道如何创建一个Math.random()函数,或类似的东西,它选择0-9的数字。但随着程序的进展,将出现另一个随机变量。那个随机值是我想从0-9比例中删除的。 (另一个随机变量也是0-9)
答案 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()
将从数组中获取未使用的值。