我搜索了一阵子,一直在努力寻找这个问题,我试图生成几个随机的,唯一的数字C#。我正在使用System.Random,并且正在使用DateTime.Now.Ticks种子:
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吗?谢谢
NewNumber()
我经常打电话给NewNumber(),但是问题是我经常得到重复的数字。
Random.Next不能保证数字是唯一的。另外,您的范围是从0到10,并且可能会得到重复的值。int检查是否不包含重复项后,您可以设置列表并在列表中插入随机数。就像是:
Random.Next
int
public Random a = new Random(); // replace from new Random(DateTime.Now.Ticks.GetHashCode()); // Since similar code is done in default constructor internally public List<int> randomList = new List<int>(); int MyNumber = 0; private void NewNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); }