【发布时间】:2013-01-06 13:19:05
【问题描述】:
我已经搜索了一段时间并且一直在努力寻找这个,我正在尝试生成几个随机的、唯一的数字是 C#。我正在使用System.Random,我正在使用DateTime.Now.Ticks 种子:
public Random a = new Random(DateTime.Now.Ticks.GetHashCode());
private void NewNumber()
{
MyNumber = a.Next(0, 10);
}
我经常打电话给NewNumber(),但问题是我经常收到重复的号码。有人建议,因为我每次都声明随机数,它不会产生随机数,所以我把声明放在我的函数之外。有什么建议或比使用 System.Random 更好的方法吗?谢谢
【问题讨论】:
-
只要你只创建一次 Random 对象,你应该没有问题。如果您希望数字是唯一的(还没有那个数字),那么您需要添加额外的内容,而不仅仅是使用 Random
-
您是否在寻找“数字 1..10 的排列”而不是“1..10 范围内的随机数”? (绝对给你10个随机序列的唯一数字)
-
为什么不生成guid?你需要 int 还是任何唯一的字符串就足够了?
-
在生成所有十个唯一值之后,您希望您的代码生成什么?第 11 个值(共 10 个)应该是多少?