您当前的位置: 首页 >  c#

寒冰屋

暂无认证

  • 2浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

如何使用 C# 生成随机并唯一的数字?

寒冰屋 发布时间:2022-05-10 21:45:00 ,浏览量:2

咨询区
  • Christian Peut

我的项目中需要生成若干个并且唯一的随机数,我用的是 System.Random,种子给的是 DateTime.Now.Ticks ,参考如下代码:

private void NewNumber()
{
    Random a = new Random(DateTime.Now.Ticks.GetHashCode());

    MyNumber = a.Next(0, 10);
}

当我多次调用 NewNumber() 方法时,我发现会经常出现重复的值,一些朋友说是因为每次都 new 了一下 Random 所致,建议提取出来,代码如下:

public Random a = new Random(DateTime.Now.Ticks.GetHashCode());
private void NewNumber()
{
    MyNumber = a.Next(0, 10);
}

虽然随机性达到了,但我发现还是会存在 重复 的情况,请问是否有更好的解决方法。

回答区
  • tsme86

如果你仅仅是需要在  0-9 之间做 随机唯一 的话,我建议你用 洗牌策略 来打乱数组元素即可,参考如下代码:

        static void Main(string[] args)
        {
            var nums = Enumerable.Range(0, 10).ToArray();
            var rnd = new Random();

            // Shuffle the array
            for (int i = 0; i             
关注
打赏
1665926880
查看更多评论
0.0467s