我想生成25個唯一的隨機數並在控制檯中列出它們。這些數字應該至少有10個字符。任何簡單的方法來做到這一點?生成多個隨機數
生成多個隨機數
回答
嘗試了建設的數字字符串,並使用一個HashSet,以確保它們是唯一的:
Random random = new Random();
HashSet<string> ids = new HashSet<string>();
while (ids.Count < 25)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i)
{
sb.Append(random.Next(10));
}
ids.Add(sb.ToString());
}
輸出示例:
7895499338 2643703497 0126762624 8623017810 ...etc...
類HashSet
存在於.NET 3.5和更新。
問題出在「25 unique random」。顯示25個隨機數很容易
Random r = new Random();
for(int i=0; i<25; i++)
Console.WriteLine(r.Next(1,100).ToString());
雖然這些不一定是唯一的。如果您不想允許重複,則需要以某種方式存儲先前生成的數字,如果您擊中舊數字,則需要再次滾動。
請注意您以這種方式更改生成的數字的概率分佈。
編輯:我剛剛注意到這些數字應該是十個字符長。由於9,999,999,999超過Int32.MaxValue,我建議使用Math.Floor(r.NextDouble() * 10000000000 + 1000000000)
而不是r.Next(1,100)
。
由於您的號碼很長,您不必擔心重複。他們是非常不可能的。
Random rnd = new Random(table);
for(int i = 0; i < 25; ++i) {
Console.WriteLine("{0}", rnd.Next(50, 50+i)
}
不保證是唯一的。 – crazyscot 2010-05-31 09:16:42
你可以在數字計算機上提供一種保證技術。我的意思是100%? – 2010-06-09 21:15:27
一個簡單的方法是這樣的:
class Test
{
private static void Main()
{
Random rand = new Random();
for (int i = 0; i < 25; ++i)
{
Console.WriteLine(rand.Next(1000000000, int.MaxValue));
}
}
}
這將確保數字總是10個字符(數字)長。但它們不一定是唯一的。如果你想他們肯定是獨一無二的,你必須做這樣的事情:
class Test
{
private static void Main()
{
Random rand = new Random();
var generatedSoFar = new HashSet<int>();
for (int i = 0; i < 25; ++i)
{
int newRand;
do
{
newRand = rand.Next(1000000000, int.MaxValue);
} while (generatedSoFar.Contains(newRand)); // generate a new random number until we get to one we haven't generated before
generatedSoFar.Add(newRand);
Console.WriteLine(newRand);
}
}
}
如果你希望能夠有超過十個位數,你隨機產生10之間的數字位數您最大數字位數。然後在StringBuilder或List中隨機生成每個數字(或一組數字)。您可以使用上面使用的相同的HashSet方法來確保唯一性。
隨機性和唯一性有很大的不同。
所以,如果你真的需要獨特號碼,你必須確保你保存的地方都已經創建了數字和檢查,如果新創建一個不在此列表中,或者您必須提供一些算法,確保了給定的數字不能創建兩次。
爲了讓第二部分工作,您大多需要創建時刻的日期/時間,導致當前日期/時間對永遠是唯一的。唯一的問題是您每秒(毫秒)有多少個創作,以及有多少位可用於存儲您的唯一編號。
關於使用12位數的示例is made here。希望這可以幫助。
- 1. 生成很多隨機數
- 2. 在JavaScript中生成多個隨機數
- 3. 多個對象的隨機數生成
- 4. 生成唯一的多個隨機數
- 5. Unity3d生成多個隨機數
- 6. 在sqlite中生成多個隨機數
- 7. 在隨機生成50個隨機數中使用隨機數#
- 8. 隨機數生成
- 9. 生成隨機數
- 10. 生成隨機數
- 11. 生成隨機數
- 12. 生成隨機數
- 13. 隨機數生成
- 14. 隨機數生成機制
- 15. 生成隨機數:計算隨機生成的x次數
- 16. 隨機數生成器幫助不生成隨機數 - C
- 17. 生成一個隨機數,但每個隨機數在LUA/Love2d
- 18. 隨機生成一個隨機布爾
- 19. Matlab的生成多個隨機矩陣
- 20. 隨機()不生成隨機數
- 21. 從隨機長生成隨機數
- 22. 使用SHA多次生成隨機數
- 23. 在Matlab中生成多元隨機數
- 24. 防止隨機數多生成一次
- 25. 多範圍隨機數生成器
- 26. 爲多維數組隨機生成值
- 27. 生成一個隨機數得到一個隨機列表項
- 28. 生成一個隨機值
- 29. 僞隨機數生成
- 30. 無法生成隨機數
按字符我猜你是指十進制數字? – 2010-05-31 09:12:58
是的,他們也可以是字母數字字符..沒有guid的請 – Jasl 2010-05-31 09:14:56
字母數字!=隨機數字。你想要隨機字符串 – RvdK 2010-05-31 09:16:28