生成随机唯一值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

回到顶部