【发布时间】:2022-01-01 00:13:54
【问题描述】:
如果我在 Java 中有以下内容...我想让用户指定随机数生成器的种子,因此对于给定的种子,随机数的顺序始终相同...最终将输入种子每次生成相同的字母模式..
Random rand = new Random(Long.parseLong(t[0]));
char r = (char)(rand.nextInt(26) + 'A');
What would be the equvalent to do the same for random in C++
cin >> seed;
srand(seed);
char('A' + rand() % 26)
srand(seed) 是否可以在 C++ 中工作..我已经看到响应以是或否的方式进行...
【问题讨论】:
-
Java Random 在使用相同种子时总是返回相同的数字,只要所有 Java 版本都使用相同的 Random 实现算法。但是该算法可以随时或在任何 Java 发行版中被替换。不要依赖它的确定性!例如。几年前,Android 的 SecureRandom 实现已被替换,许多应用程序都遇到了问题。如果您想要确定性输出,请使用标准化的密钥生成函数,例如 PBKDF2。
-
那么,究竟是什么阻止了您尝试基于
srand的方法,看看它是否能按您的预期工作?