【问题标题】:How to make c# Random Numbers repeat如何使c#随机数重复
【发布时间】:2015-05-19 19:22:02
【问题描述】:

我正在尝试生成随机数组来测试我的家庭作业。 问题是生成的数字总是唯一的,我不时需要一些重复的数字。

这是我想出的代码:

static int[] RandomIntArray()
{
    Random rnd = new Random();
    Console.Write("Enter array Length: ");
    int n = int.Parse(Console.ReadLine());
    int[] arr = new int[n];

    for (int i = 0; i < arr.Length; i++)
    {
        arr[i] = rnd.Next(short.MinValue, short.MaxValue);
    }

    return arr;
}

【问题讨论】:

  • 您的意思是要重复相同的数字吗?或者您希望创建相同的随机数模式?
  • random 是随机的,你期待什么?如果要重复数字,请缩小范围。如果有数千个选项,则必须生成数千个才能预期重复。
  • 随机是随机的。如果您希望它偶尔重复一次,可以设置更小的范围,或者构建您自己的逻辑(例如 if (i % 100 == 0) arr[i] = arr[i-1]; 或任何适合您需要的内容。
  • 他们会在某个时候重复/重复!
  • @Dleh 我发誓我没有抄袭你的答案——你只比我快 4 秒 :)

标签: c# random numbers repeat


【解决方案1】:

您可以播种随机数生成器,因此它始终会产生相同的随机序列:

Random rnd = new Random(1/* Any seed value you want in here */);

如果你想强制一些重复的数字,你可以这样:

static int[] RandomIntArray()
{
    Random rnd = new Random();
    Console.Write("Enter array Length: ");
    int n = int.Parse(Console.ReadLine());
    int[] arr = new int[n];

    for (int i = 0; i < arr.Length; i++)
    {
        if(i > 0 && rnd.Next(10) == 1) // a 1 in 10 chance of a dupe
        {
            arr[i] = arr[i-1]; 
        }
        else
            arr[i] = rnd.Next(short.MinValue, short.MaxValue);
    }

    return arr;
}

【讨论】:

  • 我怀疑他的意思是他希望每隔一段时间就有一系列重复的数字。
【解决方案2】:

如果您希望数字偶尔重复一次,请缩小范围。它们更有可能导致重复。

    arr[i] = rnd.Next(0, 10);

【讨论】:

    【解决方案3】:

    您希望重复数字的频率将决定您使用哪种方法。你总是可以将你得到的随机数四舍五入到最接近的 10、100,直到“bins”足够大,以至于“bins”可以随心所欲地出现。这类似于@DLeh 建议的缩小范围,但它允许您将生成的数字分布在更大的范围内。

    【讨论】:

      【解决方案4】:

      如果你用相同的种子初始化随机数,你会一直得到相同的数字序列

      Random rnd1 = new Random(5);
      Random rnd2 = new Random(5);
      
      for(var i=0;i<10; i++){
          Console.WriteLine(rnd1.Next() + ", " + rnd2.Next());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 2017-05-20
        • 2020-12-26
        • 2010-12-10
        • 2015-01-09
        • 2012-12-17
        • 1970-01-01
        相关资源
        最近更新 更多