如何用time()和一个键(字符串)来播种srand

时间:2014-04-17 07:46:59

标签: c++ time key seed srand

假设我有这个密钥

string key = "WID%ij38(@$151#3da=="

如何在C ++中使用srand()time()以及密钥进行播种?

无法执行srand(time(NULL)*key)),因为key是一个字符串。

无论如何转换它?

2 个答案:

答案 0 :(得分:2)

您可以尝试哈希字符串

srand(std::hash<std::string>{}(key));

答案 1 :(得分:2)

严格来说,the argument to srand must be an unsigned int。现在,您可以使用您的字符串并创建一个哈希值,为您提供unsigined int,并从中开始工作。

当然,如果您尝试增加熵,出于安全考虑,您可能会感到失望,特别是如果字符串已修复或以任何方式来自用户。