我正在通过编写在 objective-c 中播种 PRNG
srandom(seed);
我是 C# 我可以将 PRNG
保存在一个变量中:
prng = new Random(seed);
这在 Objective-C
中也可行吗?
我想将 PRNG
保存在一个变量中的原因是希望立即和稍后生成的数字具有确定性的结果。我不想冒另一个函数重新播种 PRNG 的风险。
我尝试做一些研究,例如阅读这篇列出不同库的文章:http://nshipster.com/random/ ,但我还没有找到任何东西。
最佳答案
在 C 中,srand() 和 rand() 与对象无关,就像在 C# 中一样。 srand() 只是设置一个全局变量,然后 rand() 从中读取。据我所知,Objective-C 为该库使用了原始的 C 实现。由于不涉及任何对象,因此每次调用函数 rand()
都将始终访问由 srand()
设置的相同 PRNG 种子。
但这并不意味着没有任何解决方案。首先(也许不是最好的解决方案)是将您自己的 PRNG 编写为一个对象。另一种选择是找到一个面向对象的 PRNG 库(我通常不在 Objective-C 中编写代码,所以我没有任何建议)。最后,您可以遵循通常与 rand()
一起使用的标准,如果适合您的应用程序,则只在程序开始时调用一次 srand()
.
关于ios - 可以在 Objective-C 中保存种子 PRNG 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39205830/