Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
Algorithm AS3随机算法_Algorithm_Actionscript 3 - Fatal编程技术网

Algorithm AS3随机算法

Algorithm AS3随机算法,algorithm,actionscript-3,Algorithm,Actionscript 3,我需要一个建议。我想要一个函数,返回从1到100的随机数,条件是不重复所选的数字。这就像是一张棋盘,里面会摆满一些随机的东西,而不是一件事超过另一件事。。。如果有人能给我提个建议,我会很高兴的。谢谢。创建一个包含100个数字(1..100)的数组,然后按“随机”对数组进行“排序”。然后,您可以通过阵列一次提取一个数字 我还没有测试下面的代码,但我有这些代码片段,您可以将它们拼凑在一起以获得预期的结果 public static function randomNumber(min:Number,

我需要一个建议。我想要一个函数,返回从1到100的随机数,条件是不重复所选的数字。这就像是一张棋盘,里面会摆满一些随机的东西,而不是一件事超过另一件事。。。如果有人能给我提个建议,我会很高兴的。谢谢。

创建一个包含100个数字(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(最小:编号,最大:编号):编号{
变量rnd:Number=Math.floor((Math.random()*((max+1)-min))+min);
返回rnd;
}
公共静态函数随机化(arr:Array):数组{
var len:编号=阵列长度;
变量rnd:数字;
var-tmp:对象;
对于(var i:Number=0;i也像这样

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;
        }

    }

}
包
{
导入flash.display.Sprite;
导入flash.events.Event;
/**
* ...
*@作者Vadym Gordienko
*/
公共类Main扩展了Sprite
{
公共函数Main():void
{
if(stage)init();
else addEventListener(Event.ADDED_TO_STAGE,init);
}
私有函数init(e:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE,init);
//入口点
var startArray:Array=generateNumberArray(100);
var randomArray:Array=randomArray(startArray);
跟踪(“startArray=“+startArray”);
跟踪(“randomArray=“+randomArray”);
}
/**
*按长度生成数字数组
*@param长度
*@返回数字数组
*/
公共静态函数generateNumberArray(长度:int):数组
{
var numberArray:Array=[];
对于(变量i:int=0;i
它工作得很好,但我不明白你在随机中做什么。如果你想解释一下。谢谢。如果你能解释它是如何与小数组一起工作的,让我们说5个项目。@tziuka
随机
函数接受一个“事物”数组(在你的案例中是数字(但可以是用户、项目、卡片、形状等)。它确定数组的长度,然后在该长度上循环,将列表中的一个随机项替换为当前索引。它并不完美,但肯定会混淆列表中的项。我们以前做过类似的事情,只是我们会向数组中的对象添加“rdm”属性,然后实际使用array.sort(“rdm”)不确定是否值得一个新答案。@Bob有趣的是,你提到了我刚才检查过的,我以前有一个答案,采用了类似的方法: