最近在寫撲克牌產生,就一定會用到隨機不重覆序列
底下提供一個最簡單的 不重覆隨機的方法

就是拿自己跟別人交換 假設 陣列有 1-10 , 則 拿 1 與 隨機一數交換 , 依序 1 ,2 ,3 .... 到 10;
在過程中 若遇到跟 自己一樣 則加 1 .

for (var i:Number = 1; i<_len; i++) {
        rand = Math.floor(Math.random() * _len);
        if(rand==i)rand+=1;
        temp = p_array[i];
        p_array[i] = p_array[rand];
        p_array[rand] = temp;
        _array = p_array;
}

最後得到的 _array 就是不重覆隨機數列 !

以下是網路上提供的方法2008---------------------------------------------------------------------------------------------------------------------------
方法1 //as2.0-------------------------------------------------------------------------------------------------------------------------------------------

my_array=new Array();
n=5;
for(var i=0;i
    my_array[i]=i;
}
my_array.sort(function(){return random(3)});

//as3.0-------------------------------------------------------------------------------------------------------------------------------------------

var my_array:Array=new Array();
var n:Number=5;
var i:Number=0;
for(i=0;i
    my_array[i]=i;
}
my_array.sort(function(){return Math.floor(Math.random()*10)});



方法2 -------------------------------------------------------------------------------------------------------------------------------------------

my_array=new Array();
n=5;
for(var i=0;i my_array[i]=i;
}
for(var i=0;i var tmp1=random(n);
var tmp2=my_array[i];
my_array[i]=my_array[tmp1];
my_array[tmp1]=tmp2;
}  



arrow
arrow
    全站熱搜
    創作者介紹
    創作者 u2420123 的頭像
    u2420123

    ActionScript

    u2420123 發表在 痞客邦 留言(11) 人氣()