要如何列出不重複的隨機亂數呢? 因為隨機亂數連續取值,會產生重複號碼。 要解決這個問題。 例如:程式輸出 樂透彩 選號 49個數字隨機取6個 想到三個陣列方法。 方法一:直接把全部數字49個號碼儲存在陣列裡面, 再用迴圈跑個一輪做隨機元素交換,for(i=0; i<arr.length; i++), 迴圈裡面用一個隨機亂數取值, 指到哪個元素就 i=序列的元素跟那個隨機元素交換。 方法二:如同方法一把全部數字49個號碼儲存在陣列裡面, 再用隨機方式取出陣列裡的元素號碼,並且重新設定該元素內的 值為號碼以外的值,像是負一或其他,然後再繼續隨機取值, 如果取到的值為設定的取出重設值(代表已經選過了),就再來一次。 方法三:使用兩個迴圈,內層迴圈裡隨機亂數取值,然後再跟之前 取過號碼的元素做比較,如果發現有一樣的號碼,可以使用i--讓 隨機亂數在重找一遍號碼,當然外面迴圈跑到越後面,後面的元素 取得的號碼跟前面重複的機會就越高。所以,這個迴圈會跑個很多次, 使用計數器,發現49取49個亂數的迴圈跑個四百多次都有可能。 方法四:已選出來的,把儲存值更改成零或負一.. Javascript使用方法二更方便,直接刪除已經取得的號碼。 <script type="text/javascript"> var arr =[]; for (i=0;i<49;i++){ arr[i]=i+1; } var rancodes6= new Array(6); function ans(){ var x; for(i=0;i<6;i++){ //這邊記得要用49-i,元素每取走一個,就少一個。 x=Math.floor(Math.random()*(49-i)) rancodes6[i]=arr.splice(x,1); } return rancodes6; } document.write(&quo
留言
張貼留言