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

隨機無重復數演算法

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

閱讀全文

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

熱點內容
蘋果手機怎麼下載七彩app商店 瀏覽:722
安卓手動製作視頻用什麼軟體 瀏覽:674
python爬蟲請求知識的學習 瀏覽:479
加密區多高多少米 瀏覽:180
unix退出命令 瀏覽:214
大廠考演算法題 瀏覽:518
ubuntu安裝php55 瀏覽:704
蘋果手機視頻app投屏到電視怎麼投 瀏覽:908
8848加密通話計費 瀏覽:50
撥號盤命令 瀏覽:27
桌面如何加密軟體 瀏覽:903
戰地1怎麼進空的伺服器 瀏覽:185
javaee企業pdf 瀏覽:615
php和python個人開發 瀏覽:121
51單片機直流電機調速程序 瀏覽:443
下載app失敗怎麼辦啊 瀏覽:13
數據演算法與拓撲 瀏覽:883
excel宏的命令 瀏覽:564
治癒系緩解壓力的音樂 瀏覽:745
整除數字類型python 瀏覽:758