我想要生成随机数 - 除了给定相同的种子,它们应该总是相同的。怎么可能做到这一点?
例如,给定种子“我喜欢海龟”,无论何时/多少次调用它,它都应该生成一个数字,例如 1234。我需要这个用于安全应用程序。
这正是伪随机数生成器 (PRNG) 的工作原理。当以相同的方式播种时,它们会产生相同的伪随机数序列。
看看Random
类的构造函数的文档:
为不同的 Random 对象提供相同的种子值会导致每个实例产生相同的随机数序列。
请注意,根据您在问题中的示例,PRNG 使用数字种子而不是字符串。如果您需要加密安全的 PRNG,那么您将需要使用除 之外的类Random
,尽管关于种子的相同原则也适用。
如果您正在做安全工作,那么使用图书馆确实会为您提供更好的服务,但是如果您绝对必须自己做...
看起来您更愿意计算哈希码。
这是该页面上的代码示例
public static string CalculateMD5Hash(string strInput)
{
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strInput);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("x2"));
}
return sb.ToString();
}