2012-11-24 89 views
29

我只是想知道如何在C#中的随机数发生器的作品。我也很好奇,我怎样才能制作一个程序,产生从1到100的随机数整数INTEGER数字。C#的随机数生成器是如何工作的?

+2

Random random = new Random(); random.Next(1,101); //包括1和100 random.Next(1,100); //包含1并排除100 – AmazingDreams

+3

@AmazingDreams:不,下限是*包含*。 –

+0

@JonSkeet谢谢,自从我使用它以来已经有一段时间了。做了一个编辑。包括 – AmazingDreams

回答

20

我只是想知道如何在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

+0

我可以只说一些像“Random random = new Random.Next(0,101);”? –

+2

@SethTaddiken:不,你不能。 (而我的名字是乔恩,而不是约翰。)根据你今天到目前为止的问题,我强烈建议你拿一本好的入门C#书。初始学习可能比问这里要有效得多。 –

+0

那么你可以通过一本书来工作,并且当你试图玩弄不同的程序和信息不能立即提供给你时仍然需要帮助。 – Danrex

32

可以使用Random.Next(int maxValue)

返回: 一个32位带符号整数大于或等于零且小于 包括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); 
+0

谢谢des :)。这很好。 –

+0

@SethTaddiken:呃,它不会做你*询问的,这是一个介于1和100之间的数字。它永远不会给你100,但它会*给你0.此外,你应该确保你真的明白你不应该每次创建一个新的'Random'实例。 –

+0

如果我打印出来的变量是1到100之间的一个随机数,会发生什么? –

1

我一直在搜索互联网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. 创建一个1个维整数数组。
  2. 用无序数字填充数组。
  3. 使用rnd.Next获取将被选中的号码的位置。

这很好。

为了获得超过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 ...位的随机数。

希望这可以帮助一个积极的人。

+1

rnd.Next(10)已经在你需要的范围内给你一个数字。你不需要1〜10之间的数字来查找 – AaA