Hashtable values = new Hashtable();
protected void Button1_Click(object sender, EventArgs e)
{
Random r = new Random();
int newval = r.Next(10);
values.Add("key",newval);
//foreach (object value in values.Values)
//{
// Response.Write(value.ToString());
//}
ArrayList arrayList = new ArrayList(values.Values);
foreach (int key in arrayList)
{
Response.Write(key);
}
}
如何避免重複號碼
回答
這是隨機的。根據定義,存在統計數字會重複的可能性。您可以將1-10個隨機整數添加到列表中,並且不會重複,但這不太可能。
理想情況下,每次調用隨機函數時,獲得任意一個數字的機率與獲取其他數字的機率完全相同,包括上次得到的數字。
如果你不想值重複 - 你可以將其添加到查看新的值包含在當前設置值之前執行檢查(如果這是你所要求)
如果你想避免增加在重複的值 - 到值,你可以這樣做:
Random r = new Random();
int newval = r.Next(10);
//Checks for containment
if(!values.Contains(newval))
{
values.Add("key",newval);
}
你應該增加值到它,並重新生成之前檢查你的哈希表。那麼你最終會得到一個遞歸函數!
如果您有n您希望支持的值,並且您只希望將它們用於一次,則常用技巧是先提前對這些值進行洗牌,然後再簡單地按順序返回它們。否則,與消耗的每個連續值相比,您將具有越來越高的碰撞概率。
研究諸如Fisher-Yates之類的混洗算法。
我想說這是最好的答案,但是你會如何處理大量的隨機數字,在這些數字中洗牌會過於機智,並且會超過檢查已經選擇的數字。然後怎樣呢?! – AlanFoster 2011-04-06 15:03:53
還要注意,創建隨機當這樣的:
Random r = new Random(); int newval = r.Next(10);
類是與基於當前時間值初始化。如果你把這段代碼放在一個循環中,那麼你會注意到newval每秒只改變幾次。
最好創建一次Random實例,並在每次需要新的隨機數時重用它。
是否有特殊原因您使用Hashtable
而不是HashSet?隨着HashSet<int>
,你可以很容易地生成N
獨特的隨機數:
HashSet<int> Keys = new HashSet<int>();
Random rnd = new Random();
while (Keys.Count < 10)
{
Keys.Add(rnd.Next(10));
}
的Add
方法將返回false
如果要添加的值已經是集合中,並且該值將不會被再次添加。
至少在處理程序外部創建Random
實例。
Random r = new Random();
Hashtable values = new Hashtable();
protected void Button1_Click(object sender, EventArgs e)
{
int newval = r.Next(10);
values.Add("key",newval);
//foreach (object value in values.Values)
//{
// Response.Write(value.ToString());
//}
ArrayList arrayList = new ArrayList(values.Values);
foreach (int key in arrayList)
{
Response.Write(key);
}
}
- 1. 如何避免重複以下代碼?
- 2. 如何避免重複的html代碼?
- 3. 如何避免代碼重複?
- 4. 如何避免重複代碼
- 5. Java - 如何避免此重複代碼
- 6. 如何避免重複的代碼?
- 7. 避免代碼重複
- 8. 避免重複代碼xlsxwritter
- 9. 避免重複代碼
- 10. 避免代碼重複
- 11. 避免重複SQL代碼?
- 12. 避免jQuery代碼重複
- 13. PLSQL避免代碼重複
- 14. jQuery避免代碼重複
- 15. C#避免重複代碼
- 16. 如何避免重複?
- 17. 如何避免重複值?
- 18. 如何避免重複值
- 19. 如何避免RowDefinition重複?
- 20. 如何避免重複
- 21. 避免重複
- 22. 避免重複
- 23. 避免重複行
- 24. 避免重複值
- 25. R:避免重複$
- 26. 避免重複行
- 27. 如何重構PlayFramework Action和Async Action以避免代碼重複?
- 28. jQuery重構,如何避免重複代碼?
- 29. 如何重構「使用」語句以避免代碼重複?
- 30. 如何將此代碼分解以避免C#代碼重複?
而問題是... – 2011-04-06 14:53:18
我想你的問題「當生成一個隨機的整數集合時,我該如何確保我沒有任何重複的數字?那是對的嗎? – asawyer 2011-04-06 14:54:09
你想避免重複的鍵或值?您何時想避開它們 - 何時添加到Hashtable中,或者何時從ArrayList中寫出它們? – JohnK813 2011-04-06 14:55:16