2017-02-19 38 views
1

我想生成3个随机数从列表中选择一个随机字符串(strLabel),但我一直得到相同的组合。有没有办法阻止它重复相同的数字?如何在Visual Studio中获得没有重复模式的随机数字?

Random r = new Random(); 
int iSelect3 = r.Next(0, 35); 
textBox3.Text = strLabel3[iSelect3]; 

我想使用“更随机”的东西,因为我不断得到相同的数字组合,谢谢!

回答

0
Random r = new Random((int) DateTime.Now.Ticks & 0x0000FFFF); 
Thread.Sleep(20); // Apply an algorithm to differentiate the seed value in each invocation, or call the Thread.Sleep method to ensure that you provide each constructor with a different seed value. 
int iSelect3 = r.Next(0, 35); 
textBox3.Text = strLabel3[iSelect3]; 

提供相同的种子值不同的随机的对象使每个实例以产生随机数的相同的序列。这通常是在测试依赖随机数生成器的应用程序时完成的。 如果您的应用程序需要不同的随机数字序列,请使用不同的种子值重复调用此构造函数。产生独特种子价值的一种方法是使其具有时间依赖性。例如,像Random()重载一样,从系统时钟导出种子值。但是,系统时钟可能没有足够的分辨率来提供具有不同种子值的此构造函数的不同调用。这导致随机数生成器生成相同的伪随机数序列,如以下示例中前两个随机对象所示。为了防止出现这种情况,请使用算法来区分每次调用中的种子值,或者调用Thread.Sleep方法以确保为每个构造函数提供了不同的种子值。

您可以了解更多关于随机MSDN