Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C中的多个随机数生成器_Objective C_Random_Prng - Fatal编程技术网

Objective c 目标C中的多个随机数生成器

Objective c 目标C中的多个随机数生成器,objective-c,random,prng,Objective C,Random,Prng,在我当前的项目中,我需要多个随机数生成器,因为我需要能够彼此独立地重复它们的序列。 到目前为止,我并没有找到任何方法用标准的objective-c随机数生成器来实现这一点,因为它们只有一个全局状态 我认为有一个随机数生成器类可以解决我的问题。我可以创建几个可以单独重置的实例 这样的东西已经有了吗?我在objective c中找不到任何随机数生成器实现。我希望避免自己实现它,因为我没有使用随机数的经验,我认为这是很难做到的。我有一个基于算法的随机类,你可以从我的dropbox中获得 它相当古老,并

在我当前的项目中,我需要多个随机数生成器,因为我需要能够彼此独立地重复它们的序列。 到目前为止,我并没有找到任何方法用标准的objective-c随机数生成器来实现这一点,因为它们只有一个全局状态

我认为有一个随机数生成器类可以解决我的问题。我可以创建几个可以单独重置的实例


这样的东西已经有了吗?我在objective c中找不到任何随机数生成器实现。我希望避免自己实现它,因为我没有使用随机数的经验,我认为这是很难做到的。

我有一个基于算法的随机类,你可以从我的dropbox中获得

它相当古老,并且不是为ARC编译的,但这并不会降低它的性能:)

示例代码:

MTRandom *randWithSeed = [[MTRandom alloc] initWithSeed:12345];
double d = [rand nextDouble];
int i = [rand nextInt];

MTRandom *timeBasedRand = [MTRandom new]; // seeds with current time
double d2 = [timeBasedRand nextDouble];
int i2 = [timeBasedRand nextInt];
编辑:如果你想变得很酷,你可以使用:

你试过了吗

srandom(seed);
然后打电话

random();

??如果种子是相同的,那么你应该得到相同的随机数序列。

你需要什么样的PRNG?非加密?是游戏用的。所以只要它看起来是随机的就可以了。这看起来和我想要的一模一样。执照怎么样?我可以用你的代码做任何我想做的事吗?@sietschie别担心。没有许可证,但我不介意在游戏结束时有一个链接:)如果你不喜欢MT,那么有很多其他可能的PRNG与乔治·马萨格里亚或皮埃尔·勒奎尔等名字相关。1是很好的答案;我希望我能将XKCD参考值设为+2。Mersenne twister有点老了,我更喜欢使用SFMT:它更快、更小的状态,并提供“更好”的结果。唯一的问题是OP表示他希望同时有多个随机数。是的。但是我需要几个随机序列,我可以独立重置。你能预生成随机序列吗?因为这些数字是固定的,所以您可能只需要生成“随机”数字数组并存储它们。你希望一直改变随机序列吗?那是可能的。但是保存种子似乎比保存整个序列更容易。再加上所有的簿记,可能需要使它的工作。对我来说,RNG对象看起来像是一个更干净的解决方案。