C#的随机数发生器如何工作?

时间:2012-11-24 09:29:51

标签: c# random numbers generator

我只是想知道C#中的随机数生成器是如何工作的。我也很好奇我如何制作一个从1-100生成随机 整个整数 数字的程序。

4 个答案:

答案 0 :(得分:32)

您可以使用Random.Next(int maxValue)

  

<强>返回:   32位有符号整数,大于或等于零,且小于   包括maxValue;也就是说,返回值的范围通常包括零   但不是maxValue。但是,如果maxValue等于零,则maxValue为   返回。

var r = new Random();
// print random integer >= 0 and  < 100
Console.WriteLine(r.Next(100));

对于这种情况,您可以使用Random.Next(int minValue, int maxValue),如下所示:

// print random integer >= 1 and < 101
Console.WriteLine(r.Next(1, 101);)
// or perhaps (if you have this specific case)
Console.WriteLine(r.Next(100) + 1);

答案 1 :(得分:22)

  

我只是想知道C#中的随机数生成器是如何工作的。

这是特定于实现的,但wikipedia entry for pseudo-random number generators应该会给你一些想法。

  

我也很好奇如何制作一个从1-100生成随机整数数字的程序。

您可以使用Random.Next(int, int)

Random rng = new Random();
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(rng.Next(1, 101));
}

请注意,上限是独占 - 这就是我在这里使用101的原因。

您还应该了解与Random相关联的一些“问题” - 特别是,每次要生成随机数时,都应创建新实例,否则,如果你在很短的时间内产生大量随机数,你会看到很多重复。有关详细信息,请参阅my article on this topic

答案 2 :(得分:0)

我一直在网上搜索RNG一段时间了。我看到的一切都是太复杂或者不是我想要的东西。在阅读了几篇文章后,我能够提出这个简单的代码。

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)])
}

简单解释,

  1. 创建一维整数数组。
  2. 用无序数字填满数组。
  3. 使用rnd.Next获取将被选中的号码的位置。
  4. 这很有效。

    要获得小于100的随机数

    {
      Random rnd = new Random(DateTime.Now.Millisecond);
      int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
      int[] d = new int[10] { 9, 4, 7, 2, 8, 0, 5, 1, 3, 4 };
      textBox1.Text = Convert.ToString(b[rnd.Next(10)]) + Convert.ToString(d[rnd.Next(10)]);
    }
    

    等等3,4,5和6 ......数字随机数。

    希望这能积极地帮助别人。

答案 3 :(得分:0)

所以如果你像这样使用它就很容易

Random random = new Random();

int answer = random.Next(0);