我已经搜索了一段时间并一直在努力找到这个,我试图用 C# 生成几个随机的、唯一的数字。我在用着System.Random
,我正在使用DateTime.Now.Ticks
seed:
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)