如何在 Delphi 中从给定的种子生成相同的随机序列[已结束]

5sxhfpxr  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(141)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

三个月前关门了。
Improve this question
我希望基于给定的“种子”值生成相同的随机序列(数字或字符)。
使用标准的Randomize函数似乎没有这样的选项。
例如,在C#中,可以使用种子值(Random seed c#)初始化Random函数。
如何在 Delphi 中实现类似的功能?

jhdbpxl9

jhdbpxl91#

您只需要为RandSeed全局变量指定一个特定的值。
实际上,我几乎对您的提问感到惊讶,因为您清楚地知道Randomize函数,其文档说明如下:
应通过调用Randomize或为RandSeed赋值来初始化随机数生成器。

0g0grzrc

0g0grzrc2#

该问题未将螺纹安全性作为一项要求,但OP在评论中明确指出。
一般来说,伪随机数生成器有内部状态,以便计算下一个数字。因此,它们不能被假定为线程安全的,并且每个线程都需要一个示例。对于封装的线程安全随机数,一个替代方法是使用一个合适的哈希函数,如xxHash,并向其传递一个种子和一个计数器,在线程中的每次调用后递增该计数器。
这里有一个xxHash的 Delphi 实现:https://github.com/Xor-el/xxHashPascal
对于一般用途,很容易根据需要在1、2或3维中创建多个版本,并返回0..1中的浮点数或范围中的整数。

相关问题