產生不重複的隨機數的方法(有一個遮照執行個體)

來源:互聯網
上載者:User
隨機|重複   把0到99的數排列,不重複.
  適用於在做多個隨機方塊遮照圖片時和在播放動畫時全部隨機播放音樂,但不重複.等
  方法一: 

oldtime=getTimer();
my_array=new Array();
n=100;
for(var i=0;i<n;i++){
  my_array[i]=i;
}
for(var i=0;i<n;i++){
 var tmp1=random(n);
 var tmp2=my_array[i];
 my_array[i]=my_array[tmp1];
 my_array[tmp1]=tmp2;
}
trace(my_array); 
trace(getTimer()-oldtime);//程式已耗用時間
//----------------------------------------------------------

--------------方法二-------------------------------------

n=getTimer();
Array.prototype.randomize = function() {
this.sort(function(a, b) { return random(2)>0 ? 1 : -1;});
}
var myArray = new Array();
for(var i=0;i<1000;i++){
myArray[i]=i; 
}
myArray.randomize();
trace(myArray); 
trace(getTimer()-n);

  方法三:

var num_arr:Array = new Array(); 
var j = 0; 
var judge = 0; 
do { 
 var temp_num = Math.round(Math.random()*100); 
 for (var i = 0; i<num_arr.length; i++) { 
  var temp_n = num_arr[i]; 
  if (temp_num == temp_n) { 
  judge = 1; 
  break; 
  } else { 
  judge = 0; 
  } 
 } 
 if (judge == 0) { 
  num_arr.push(temp_num); 
  j++; 
  _root["t"+j].text = temp_num; 
 } 
} while (j<100); 
trace(num_arr);


點擊點擊這裡下載源檔案

  製作過程: 建兩層,各放一圖片,其中上層的圖片定義執行個體名:pic_mc
  然後畫一矩形,轉化為MC,定義ID名為 box,然後在幀上寫入AS:
creatmask();
//建立遮照
newnum();
//產生隨機數
var i = -1;
var n = 0;
_root.onEnterFrame = function() {
i++;
if (i<300) {
 eval("_root.m1_mc.box"+my_array[n]).removeMovieClip();
 //移除方塊
 n++;
}
if (i>=400 && i<700) {
 m = my_array[i-400];
 _root.m1_mc.attachMovie("box", "box"+m, m+10, {_x:int(m/15)*20, _y:m%15*20});
 //載入方塊
}
if (i>800) {
 i = 0;
 n = 0;
}
};
//-------------------------------------
function creatMask() {
_root.createEmptyMovieClip("m1_mc", 1);
m1_mc._x = 0;
mc_mc._y = 0;
for (var i = 0; i<300; i++) {
 _root.m1_mc.attachMovie("box", "box"+i, i+10, {_x:int(i/15)*20, _y:i%15*20});
}
pic_mc.setMask(m1_mc);
}
function newnum() {
my_array = new Array();
n = 300;
for (var i = 0; i<n; i++) {
 my_array[i] = i;
}
for (var i = 0; i<n; i++) {
 var tmp1 = random(n);
 var tmp2 = my_array[i];
 my_array[i] = my_array[tmp1];
 my_array[tmp1] = tmp2;
}
}  在上面的基礎上有所改進


點擊點擊這裡下載源檔案

  製作方法與上有點差別,就是在box元件中的方塊轉化為MC,然後編輯這個MC,在上面做點運動變形.
newnum();
//產生隨機數
_root.createEmptyMovieClip("m1_mc", 1);
m1_mc._x = 0;
mc_mc._y = 0;
pic_mc.setMask(m1_mc);
for (var i = 0; i<300; i++) {
_root.m1_mc.attachMovie("box", "box"+i, i+100, {_x:int(i/15)*20, _y:i%15*20});
}
var i = -1;
_root.onEnterFrame = function() {
i++;
if (i<300) {
 m = my_array[i];
 eval("_root.m1_mc.box"+my_array[m]+".p").play();
}
if (i>=400 && i<700) {
 m = my_array[i-400];
 eval("_root.m1_mc.box"+my_array[m]+".p").play();
}
if (i>800) {
 i = -1;
}
};
//-------------------------------------
function newnum() {
my_array = new Array();
n = 300;
for (var i = 0; i<n; i++) {
 my_array[i] = i;
}
for (var i = 0; i<n; i++) {
 var tmp1 = random(n);
 var tmp2 = my_array[i];
 my_array[i] = my_array[tmp1];
 my_array[tmp1] = tmp2;
}
}

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。