【发布时间】:2015-04-01 12:38:46
【问题描述】:
我需要在我的代码中生成非负随机整数。下面的例子生成整数;
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
// Buffer storage.
byte[] data = new byte[4];
// Ten iterations.
for (int i = 0; i < 10; i++)
{
// Fill buffer.
rng.GetBytes(data);
// Convert to int 32.
int value = BitConverter.ToInt32(data, 0);
Console.WriteLine(value);
}
}
参考:http://www.dotnetperls.com/rngcryptoserviceprovider 但它给出了正值和负值。如何只生成非负随机整数? 我之前使用的是 Random.Next(),它给了我正整数。
【问题讨论】:
-
为什么只能取结果的绝对值:
abs(value)w3schools.com/jsref/jsref_abs.asp -
我认为这会产生问题。假设随机no生成器生成-2,我们将使用绝对值并将其用作2。接下来它生成2,随机数仍然是2。
-
好吧,不能保证两个连续的随机数不同。有什么问题?
-
我必须使用随机整数作为 snmp v3 数据包的 Msg Id。所以,我想你建议我可以使用“abs”方法来获得正整数。感谢您的帮助。
标签: random rngcryptoserviceprovider