在我目前的项目中,我需要多个随机数生成器,因为我需要能够彼此独立地重复它们的序列。 到目前为止,我没有找到任何方法来实现标准的Objective-c随机数生成器,因为它们只有一个全局状态。
我认为拥有一个随机数生成器类可以解决我的问题。我可以创建几个可以单独重置的实例。
这样的东西已经可用吗?我无法在目标c中找到任何随机数生成器实现。我想避免自己实现它,因为我没有随机数的经验,我认为这是很难做到的。
答案 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];
编辑:如果你想变得很酷,可以使用它:
答案 1 :(得分:1)
你试过吗
srandom(seed);
然后调用
random();
?如果种子是相同的,那么你应该得到相同的随机数序列。