如何在C#中生成一个随机int数?
如何在C#中生成一个随机整数?
Random
类用于创建随机数。 (当然是伪随机)。
例:
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
如果你要创建多个随机数,你应该保留Random
实例并重用它。 如果你创建新实例的时间太近,它们将产生相同的一系列随机数,因为随机发生器从系统时钟中播种。
每次你做新的随机()它被初始化。 这意味着在一个紧密的循环中,您可以获得相同的价值。 您应该保留一个Random实例,并在同一个实例上继续使用Next。
//Function to get random number
private static readonly Random getrandom = new Random();
public static int GetRandomNumber(int min, int max)
{
lock(getrandom) // synchronize
{
return getrandom.Next(min, max);
}
}
这个问题看起来很简单,但答案有点复杂。 如果您几乎看到每个人都建议使用Random类,并且有人建议使用RNG加密类。 但那么什么时候选择。
为此,我们需要首先理解术语随机及其背后的哲学。
我鼓励你使用C#https://www.youtube.com/watch?v=tCYxc-2-3fY观看这部深入了解RANDOMNESS理念的视频
首先让我们理解RANDOMNESS的理念。 当我们告诉一个人在红色,绿色和黄色之间进行选择时,内部会发生什么。 是什么让一个人选择红色或黄色或绿色?
一些初步的想法进入了决定他选择的人的思想,它可以是喜欢的颜色,幸运的颜色等等。 换句话说,我们在RANDOM中称为SEED的一些初始触发器。这个SEED是一个起点,触发器指示他选择RANDOM值。
现在,如果SEED容易被猜出,那么这些随机数被称为PSEUDO,并且当一个种子难以猜到时,那些随机数被称为SECURED随机数。
例如,一个人选择的颜色取决于天气和声音的组合,那么很难猜出最初的种子。
现在让我作一个重要的声明:
*“随机”类仅生成PSEUDO随机数并生成SECURE随机数,我们需要使用“RNGCryptoServiceProvider”类。
随机类从您的CPU时钟中获取非常可预测的种子值。 换句话说,C#的RANDOM类生成伪随机数,下面是相同的代码。
Random rnd= new Random();
int rndnumber = rnd.Next()
RNGCryptoServiceProvider类使用OS熵来生成种子。 OS熵是一个随机值,它是使用声音,鼠标点击和键盘计时,热温度等产生的。以下代码为相同。
using (RNGCryptoServiceProvider rg = new RNGCryptoServiceProvider())
{
byte[] rno = new byte[5];
rg.GetBytes(rno);
int randomvalue = BitConverter.ToInt32(rno, 0);
}
要了解OS熵,请参阅此视频https://www.youtube.com/watch?v=tCYxc-2-3fY从11:20开始说明OS熵的逻辑。 因此,用简单的词语RNG Crypto生成SECURE随机数字。
链接地址: http://www.djcxy.com/p/2921.html上一篇: How do I generate a random int number in C#?
下一篇: Generating random whole numbers in JavaScript in a specific range?