|
27
|
| Rick Jim DeLaHunt · 技术社区 · 7 年前 |
|
1
29
你在你的随机发生器中设置的初始状态非常相似。根据发电机的质量,这可能会或可能不会产生类似的输出。为了说明这一点,我将您的示例扩展为(a)只打印第一个序列,因为这是我们所关心的,(b)打印不同分辨率的几个结果:
运行时:
虽然我不知道这个随机生成器实现到底在做什么,但是您可以很容易地看到它正在执行一个非常简单的转换,将种子转换为状态,并将状态转换为输出值。正如其他评论所建议的,有更好的随机生成器和更好的种子。还要注意的是,不同实现的质量不同;Visual Studio 2017不显示此行为。 |
|
|
2
1
std::random_device
但是,如果需要使用带有线性同余生成器的小种子,则可以扩展种子值以生成更好的初始值设定项。线性生成器在重新分配种子值中的位时很慢,因此很小的差异将导致初始的几个值彼此接近。 标准库提供 std::seed_seq 它会将一个小种子扩展到一个更好的初始值:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |