【メモ】シャッフルアルゴリズム

by kaikoga forked from trace("自分用") (diff: 9)
♥0 | Line 41 | Modified 2009-07-20 23:52:17 | MIT License
play

ActionScript3 source code

/**
 * Copyright kaikoga ( http://wonderfl.net/user/kaikoga )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/1ji9
 */

// forked from kaikoga's Arrayを走査するfor eachを信じたくて
package {

    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    
    public class FlashTest extends Sprite {
        
        private var v:Array = [];
        
        public function FlashTest() {
            const NUM:int = 10;
            const ITER:int = 50000;
            for (var i:int = 0; i < NUM; i++) {
                v[i] = [0,0,0,0,0,0,0,0,0,0];
            }
            for (var iter:int = 0; iter < ITER; iter++) {
                var a:Array = [0,1,2,3,4,5,6,7,8,9];
                for (i = 1; i < NUM; i++) {
                    var n:int = Math.floor(Math.random() * (i + 1));
                    var x:int = a[n];
                    a[n] = a[i];
                    a[i] = x;
                }
                for (i = 0; i < NUM; i++) {
                    v[i][a[i]]++;
                }
            }
            for (i = 0; i < 10; i++) {
                trace(v[i].join(","));
            }
        }
        
        private var _traceField:TextField;
        public function trace(...message):void {
            if (!this._traceField) {
                this._traceField = new TextField();
                this._traceField.width = this.stage.stageWidth;
                this._traceField.height = this.stage.stageHeight;
                this._traceField.defaultTextFormat = new TextFormat("_typewriter", 10);
                this.addChild(this._traceField);
            }
            this._traceField.appendText(message.join(" ") + "\n");
        }
        
    }
}