我需要一个建议。我想要一个函数,从1到100返回随机数,条件不重复所选的数字。像棋桌这样的东西会被随机的东西填充,而不是另一件东西......如果有人能说出一个建议,我会非常高兴。感谢。
答案 0 :(得分:1)
创建一个100个数字的Array
(1..100),然后按“随机”排序数组。然后,您可以一次一个地拉出数字。
我没有测试下面的代码,但是我有这些片段,你可以拼凑起来以达到预期的效果。
public static function randomNumber(min:Number, max:Number):Number{
var rnd:Number = Math.floor((Math.random()*((max+1)-min))+min);
return rnd;
}
public static function randomize(arr:Array):Array{
var len:Number = arr.length;
var rnd:Number;
var tmp:Object;
for(var i:Number=0;i<len;i++){
rnd = randomNumber(0,(len-1));
tmp = arr[i];
arr[i] = arr[rnd];
arr[rnd] = tmp;
}
return arr;
}
var setOfNumbers:Array = new Array();
for(var i:int=0;i<100;i++){
setOfNumbers[i] = (i+1);
}
var shuffledSetOfNumbers:Array = randomize(setOfNumbers);
注意:
randomNumber
和randomize
函数是static
,因为我通常会将这些函数包含在我需要它们的应用中,但您不必使用它方式Number
vs int
或uint
获取更多选项的某些变量,但可以随意清理答案 1 :(得分:1)
也喜欢......
package
{
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author Vadym Gordiienko
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var startArray:Array = generateNumberArray(100);
var randomArray:Array = randomArray(startArray);
trace("startArray = " + startArray);
trace("randomArray = " + randomArray);
}
/**
* generate Array of numbers by length
* @param length
* @return Array of numbers
*/
public static function generateNumberArray(length:int):Array
{
var numberArray:Array = [];
for (var i:int = 0; i < length; i++)
{
numberArray[i] = i+1;
}
return numberArray;
}
/**
* generate randomly mixed array by input array
* @param inputArray - simple not mixed array
* @return Array - mixed array
*/
public static function randomArray(inputArray:Array):Array
{
var randomArray:Array = [];
var tempArray:Array = [];
for (var i:int = 0; i < inputArray.length; i++)
{
tempArray.push(inputArray[i]);
}
while (tempArray.length)
{
var randomNumber:int = Math.round(Math.random() * (tempArray.length - 1));// get random number of left array
randomArray.push( tempArray[randomNumber] );
tempArray.splice(randomNumber, 1); // remove randomed element from temporary aarray
}
tempArray = null;
delete [tempArray];
return randomArray;
}
}
}