我們可以用Math.random()的方法輕鬆的生成一個隨機的數字,但是這個數字可能是重覆的。有時候,我們需要一個不重覆的隨機數,以下提供了一種高效率的方法。 ...
說明
我們可以用Math.random()的方法輕鬆的生成 一個隨機的數字,但是這個數字可能是重覆的。有時候,我們需要一個不重覆的隨機數,可以用很多的方法來實現這個要求,以下方法是效率最高的。
解釋
不重覆的隨機數往往是規定範圍的,我們先聲明一個在這個範圍之內的數組,然後用sort方法對數組進行排序。而排序的方法里使用一個隨機數,這個隨機數使這個排序方法是不確定的。因此可以得到一個不重覆的隨機數組。
代碼
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>隨機不重覆</title> 6 <script type="text/javascript"> 7 var count = 10; 8 //原始數組 9 var original = new Array; 10 //給原始數組original賦值 11 for (var i = 0; i < count; i++) { 12 original[i] = i + 1; 13 } 14 15 var d1 = new Date().getTime(); 16 //排序 17 original.sort(function() { 18 return 0.5 - Math.random(); 19 }); 20 //輸出 21 for (var i = 0; i < count; i++) { 22 document.write(original[i] + " , "); 23 } 24 var d2 = new Date().getTime(); 25 document.write("<br />運算耗時" + (d2 - d1)); 26 </script> 27 </head> 28 <body> 29 </body> 30 </html>