objective-c - 具有上下文的确定性随机数生成器?

标签 objective-c c random seed

我正在寻找一个种子随机数生成器,它可以创建一个数字池作为上下文。它不必太好。它用于游戏,但重要的是,游戏引擎的每个实例都有自己的数字池,这样不同的游戏实例甚至游戏的其他部分使用随机数就不会破坏确定性特征生成的数字。

目前我正在使用显然没有此功能的 rand()。

是否有任何 c 或 objective-c 生成器能够执行我想要的操作?

最佳答案

使用srand设置种子,然后使用 rand():

unsigned int seed = 10;  /* Choose an arbitrary value for the seed */
int r;

srand(seed);             /* Set the seed                           */
r = rand();              /* Generate a random number               */

手册页明确指出伪随机数序列可以重复(因此它是确定性的):

Thesrand() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by rand(). These sequences are repeatable by calling srand() with the same seed value.


编辑(澄清):
请注意,手册页指出 srand() 既不是可重入的也不是线程安全的。
我认为“不同的游戏实例”是指不同的进程,在这种情况下可以使用它。
但是,如果您计划在同一过程中更改种子,您将无法获得所需的功能。在这种情况下,我建议改用 rand_r()。看看this question供引用。

关于objective-c - 具有上下文的确定性随机数生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11381807/

相关文章:

iphone - 从当前日期算起接下来的两周

ios - 将两个标签连接到一个 socket

objective-c - 在不影响其他应用程序的情况下禁用或删除 WebView 中的 cookie

c++ - C++ 宏中的随机数

ios - 使用 UIBezierPath 时出现错误

c - C 代码中的递归下降解析器

c++ - 基本 C/C++ 类型的值是如何物理存储的?

C现代数组分配?

java - 随机数问题

c++ - 创建无重复的随机数序列