導航:首頁 > 源碼編譯 > 隨機無重復數演算法

隨機無重復數演算法

發布時間:2023-02-01 01:35:51

『壹』 求一個特定區域內產生隨機數不重復的演算法

解答如下:

像這種題目就是求全排列的類型。
現在你題目中有y個數字,
第一次抽取時,共有y個數字可供選擇,因此有y種可能性。

第二次抽取時,因不能重復,所以共有y-1個數字可供選擇,因此有y-1種可能性。

第三次抽取時,也因不能重復,所以只有y-2個數字可供選擇,因此有y-2種可能性。

根據上面可以類推出第四次,第五次……第y次
因此具體的答案就為:y*(y-1)*(y-2)*(y-3)……*{y-(y-1)} = y!

『貳』 random 怎麼實現隨機數不重復方法 java

java中實現隨機數不重復主要思想是使用hashset來保存每個生成的數據,因為set集合本身內部機制實現了不保存相同的數據,代碼如下:

/**
*隨機指定范圍內N個不重復的數
*利用HashSet的特徵,只能存放不同的值
*@parammin指定范圍最小值
*@parammax指定范圍最大值
*@paramn隨機數個數
*@paramHashSet<Integer>set隨機數結果集
*/
publicstaticvoidrandomSet(intmin,intmax,intn,HashSet<Integer>set){
if(n>(max-min+1)||max<min){
return;
}
for(inti=0;i<n;i++){
//調用Math.random()方法
intnum=(int)(Math.random()*(max-min))+min;
set.add(num);//將不同的數存入HashSet中
}
intsetSize=set.size();
//如果存入的數小於指定生成的個數,則調用遞歸再生成剩餘個數的隨機數,如此循環,直到達到指定大小
if(setSize<n){
randomSet(min,max,n-setSize,set);//遞歸
}
}

『叄』 如何生成一定范圍內不重復的隨機數

我不知道你什麼語言我提供一個思路吧!
用戶名+時間(毫微秒)+永無重復的隨機數組
此套演算法適合文件上傳時用於解決文件名重復問題
理解:
用戶名:確保用戶名不重復,以此限制重復的可能性僅僅出現在某個具體用戶的操作中!
毫微秒(Ticks):此數重復的可能性極低。
隨機數組:方法是,確認要上傳幾個文件並記錄數量,然後循環出一個隨機數組,判斷:若當前隨機出的數字包含在數組中則循環次數+1(也就是當前循環變數-1)回跳一次循環,以此循環出與文件數相等的隨機數組;此處再一次保證具體某一個用戶在單次多文件上傳時不會出現文件同名情況。
若功能符合上述條件,則可以做到永無重復的文件名!
隨機數組代碼:
int[] intNum = new int[FileCollect.Count];
for (int i = 0; i < FileCollect.Count;i++ )
{
Random dom = new Random();
int domNum = dom.Next(0, 20000);
if (intNum.Contains(domNum)&&i!=0)
{
i = i - 1;
}
else
{
intNum[i] = domNum;
}
}

『肆』 該如何讓隨機數不重復!!!我想不到了

Random需要一個種子, 如果沒給用預設的, 因為每次都一樣, 所以一定會按照相同順序, 每次開啟都一致.
常見做法就是將時間當作種子, 每次運行的時間都不會一樣, 自然就不會重復了.

閱讀全文

與隨機無重復數演算法相關的資料

熱點內容
如何修改ie代理伺服器 瀏覽:417
折紙手工解壓玩具不用a4紙 瀏覽:485
怎麼雙向傳輸伺服器 瀏覽:286
電腦如何實現跨網段訪問伺服器 瀏覽:549
模塊化網頁源碼位元組跳動 瀏覽:485
梯度下降演算法中遇到的問題 瀏覽:605
伺服器連接電視怎麼接 瀏覽:323
phploop語句 瀏覽:502
交叉編譯工具鏈里的庫在哪 瀏覽:781
安卓手q換號怎麼改綁 瀏覽:399
nba球星加密貨幣 瀏覽:789
命令看網速 瀏覽:124
java堆分配 瀏覽:161
linuxbuiltin 瀏覽:560
cstpdf 瀏覽:941
texstudio編譯在哪 瀏覽:352
國家反詐中心app注冊登記表怎麼注冊 瀏覽:972
加密機默認埠 瀏覽:101
有哪個網站有免費的python源代碼 瀏覽:305
蘋果手機如何導入安卓電話 瀏覽:915