c# - 生成随机的唯一值 C#

标签 c# .net random unique

我已经搜索了一段时间并一直在努力寻找这个,我试图生成几个随机的、唯一的数字是 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 更好的方法吗?谢谢

最佳答案

I'm calling NewNumber() regularly, but the problem is I often get repeated numbers.

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# - 生成随机的唯一值 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14473321/

相关文章:

c# - 我可以在 MS.Net Framework 4.0 中使用 SqlClient 的 Mono 实现吗?

c# - Unity3D : Cannot change scripting backend to . 网络

C++ Arduino - 随机函数不起作用

jquery - 使用 Jquery 随机设置图像的宽度

PHP 7 OAuthProvider VS random_bytes token 生成

c# - 如何使用 Polly 过滤重试策略的特定端点

c# - c#中调用泛型方法时的速记

c# - 最新的 NetMQ 多线程示例

c# - 在 VS2013 中的项目之间共享设置文件

c# - 创建隐藏文件夹