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

时间:2012-06-16 14:45:27

标签: objective-c random prng

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

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

这样的东西已经可用吗?我无法在目标c中找到任何随机数生成器实现。我想避免自己实现它,因为我没有随机数的经验,我认为这是很难做到的。

2 个答案:

答案 0 :(得分:6)

我有一个基于Mersenne Twister算法的随机类,您可以从我的保管箱here获取该算法。

它相当陈旧,并没有为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];

编辑:如果你想变得很酷,可以使用它:

enter image description here Source

答案 1 :(得分:1)

你试过吗

srandom(seed);

然后调用

random();

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