如何用时间()和一个键(字符串)为srand种子

How can I seed srand with time() and a key(string)

本文关键字:字符串 种子 一个 srand 何用 时间      更新时间:2023-10-16

假设我有这个密钥

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

如何在C++中使用srand()time()和密钥一起进行种子?

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

无论如何要转换它?

您可以尝试散列字符串

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

严格来说,srand的参数必须是unsigned int。现在,您可以获取您的字符串,并创建一个哈希,从而得到一个unsigined int,然后根据它进行操作。

当然,如果出于安全原因,您试图增加熵,您可能会感到失望,尤其是如果字符串是固定的或以任何方式来自用户。