一種快速獲取N個不同隨機數的方法

2021-09-01 08:43:59 字數 679 閱讀 8864

因為專案需要,需要寫乙個演算法來獲取在f範圍內,獲取n個不同的值的演算法,因為random方法產生的值,是有可能存在相同的值,所以,選出來的值以後需要把相同的值去掉,因此根據這個思路,便有了以下的演算法:

public static int randomint(int n, int f) 			

}if(flag==0)

} return intret;

}

原理很簡單,就是隨機生成n個數,然後通過迴圈去掉相同的。但是這個演算法效率很差,特別是要選取的數字的個數超過1000以後,這個演算法幾乎需要1、2秒。因此為了解決這個問題,我引入了hashset。因為set內是不允許存在相同的值的,於是利用這個特性,寫出了這個演算法。

public static int randomset(int n, int f){

random rdm = new random(system.currenttimemillis());

setintset = new hashset();

while(intset.size()it = intset.iterator();

int i=0;

while(it.hasnext()&i其實這個演算法就是利用了set的特性,去除相同的數值,而且這個演算法效率非常高,特別是選取的數超過1000個的時候,效率可以比前面的演算法提高上百倍。

一種隨機數生成演算法

隨機數生成類 class randnumber randnumber randnumber unsigned long s 0 else unsigned short randnumber random unsigned long n double randnumber frandom unsign...

生成k個不同的隨機數(1 n)

程式設計珠璣 習題1.4 如果認真考慮了習題3,你將會面對生成小於n且沒有重複的k個整數的問題。最簡單的方法就是使用前k個正整數。這個極端的資料集合將不會明顯的改變位圖方法的執行時間,但是可能會歪曲系統排序的執行時間。如何生成位於0至n 1之間的k個不同的隨機順序的隨機整數?盡量使你的程式簡短高效。...

一種快速可預製的隨機數組產生方法

在工程軟體的設計和安全系統設計中,建立模型 產生密碼經常需要使用到隨機數組。然而計算機不會產生絕對隨機的隨機數,計算機只能產生 偽隨機數 其實絕對隨機的隨機數只是一種理想的隨機數,即使計算機怎樣發展,它也不會產生一串絕對隨機的隨機數。計算機只能生成相對的隨機數,即偽隨機數。偽隨機數並不是假隨機數,而...