我想生成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