生成随机唯一值C#
我搜索了一阵子,一直在努力寻找这个问题,我试图生成几个随机的,唯一的数字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
吗?谢谢
回答:
我经常打电话给NewNumber(),但是问题是我经常得到重复的数字。
Random.Next
不能保证数字是唯一的。另外,您的范围是从0到10,并且可能会得到重复的值。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);
}
以上是 生成随机唯一值C# 的全部内容, 来源链接: utcz.com/qa/408000.html