我想知道C#中的随机数生成器是如何工作的。同时我也好奇如何编写一个程序来产生1-100之间的整数随机数。
我想知道C#中的随机数生成器是如何工作的。同时我也好奇如何编写一个程序来产生1-100之间的整数随机数。
您可以使用Random.Next(int maxValue)
方法:
返回值: 一个大于等于零且小于 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);
Random
实例。 - Jon Skeetvalue >= minValue && value < maxValue
。 - Zbigniew我想知道C#中的随机数生成器如何工作。
那要看具体实现,但伪随机数生成器的维基百科词条可以给您一些思路。
我还想知道如何编写一个程序,以生成介于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
相关的一些“陷阱”-特别是,您不应该每次想要生成随机数时都创建一个新实例,否则如果您在短时间内生成了大量随机数,您将看到很多重复。有关更多详细信息,请参见我关于这个主题的文章。
如果你只是像这样使用它,那就很容易了。
Random random = new Random();
int answer = random.Next(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位随机数,依此类推。
希望这能对某人有所帮助。