1

我想要生成随机数 - 除了给定相同的种子,它们应该总是相同的。怎么可能做到这一点?

例如,给定种子“我喜欢海龟”,无论何时/多少次调用它,它都应该生成一个数字,例如 1234。我需要这个用于安全应用程序。

4

3 回答 3

2

这正是伪随机数生成器 (PRNG) 的工作原理。当以相同的方式播种时,它们会产生相同的伪随机数序列。

看看Random类的构造函数的文档:

为不同的 Random 对象提供相同的种子值会导致每个实例产生相同的随机数序列。

请注意,根据您在问题中的示例,PRNG 使用数字种子而不是字符串。如果您需要加密安全的 PRNG,那么您将需要使用除 之外的类Random,尽管关于种子的相同原则也适用。

于 2013-04-01T15:23:46.197 回答
0

如果您提供相同的种子,Random 类将生成相同的数字序列

如果您只想从给定字符串返回可预测的数字,请使用hash

于 2013-04-01T15:25:06.193 回答
0

如果您正在做安全工作,那么使用图书馆确实会为您提供更好的服务,但是如果您绝对必须自己做...

看起来您更愿意计算哈希码。

这是一些关于从字符串生成 MD5 哈希码的信息

这是该页面上的代码示例

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();       
}
于 2013-04-01T15:33:59.073 回答