java中產生隨機不重複數的方法:
根據min和max,產生n個不重複的隨機數。 (註:範圍[min,max],n <= (max - min 1))
想法:
0)、把從min到max的可能出現的數字全部放進一個候選List;
1)、隨機產生索引index(0 <= index <= (list.size()-1));
#2)、根據index從List中取出一個數字,list.get(index),並移除這個元素;
程式碼如下:
import java.util.ArrayList; import java.util.List; import java.util.Random; public class MyRandom { /** * 根据min和max随机生成一个范围在[min,max]的随机数,包括min和max * @param min * @param max * @return int */ public int getRandom(int min, int max){ Random random = new Random(); return random.nextInt( max - min + 1 ) + min; } /** * 根据min和max随机生成count个不重复的随机数组 * @param min * @param max * @param count * @return int[] */ public int[] getRandoms(int min, int max, int count){ int[] randoms = new int[count]; List<Integer> listRandom = new ArrayList<Integer>(); if( count > ( max - min + 1 )){ return null; } // 将所有的可能出现的数字放进候选list for(int i = min; i <= max; i++){ listRandom.add(i); } // 从候选list中取出放入数组,已经被选中的就从这个list中移除 for(int i = 0; i < count; i++){ int index = getRandom(0, listRandom.size()-1); randoms[i] = listRandom.get(index); listRandom.remove(index); } return randoms; } }
Java Math.random() 法用來傳回隨機數,隨機數範圍為0.0 =< Math.random < 1.0。
更多java知識請關注java基礎教學。
以上是java中產生隨機不重複數的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!