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

隨機無重復數演算法

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

閱讀全文

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

熱點內容
本機tcp伺服器地址 瀏覽:424
切換pdf 瀏覽:90
iturns下載的app在哪裡 瀏覽:637
雲起書院App在哪裡 瀏覽:612
怎麼對hex文件進行加密 瀏覽:282
pdf少年時 瀏覽:951
兩個同名文件夾同步 瀏覽:628
拍照文件夾哪個好用 瀏覽:89
文件夾和書包 瀏覽:509
解壓歸檔拿登記證 瀏覽:223
去體驗解壓房 瀏覽:611
單片機一鍵中斷響應 瀏覽:644
唐浩明pdf 瀏覽:843
程序員土木 瀏覽:71
android如何與web伺服器交互 瀏覽:609
蘋果小風扇app怎麼下 瀏覽:956
杭州it程序員對身體好不好 瀏覽:535
高新區編程加盟找哪家 瀏覽:31
伺服器什麼樣的好賣 瀏覽:150
單片機原理及應用第二版例題答案 瀏覽:970