我只是想知道C#中的随机数生成器是如何工作的。我也很好奇我如何制作一个从1-100生成随机 整个整数 数字的程序。
答案 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)])
}
简单解释,
这很有效。
要获得小于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);