我只是想知道 C# 中的随机数生成器是如何工作的。我也很好奇如何制作一个从 1 到 100 生成随机整数的程序。
4 回答
您可以使用Random.Next(int maxValue)
:
返回:大于或等于零且小于 maxValue 的 32 位有符号整数;也就是说,返回值的范围通常包括零,但不包括 maxValue。但是,如果 maxValue 等于 0,则返回 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);
我只是想知道 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
- 特别是,您不应该在每次想要生成随机数时都创建新实例,否则如果您在短时间内生成大量随机数,你会看到很多重复。有关更多详细信息,请参阅我关于此主题的文章。
我已经在互联网上搜索 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)])
}
简单的解释,
- 创建一个一维整数数组。
- 用无序数填满数组。
- 使用 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 ... 位随机数。
希望这对某人有积极的帮助。
所以如果你像这样使用它就很容易了
Random random = new Random();
int answer = random.Next(0);