在我当前的项目中,我需要多个随机数生成器,因为我需要能够相互独立地重复它们的序列。到目前为止,我还没有找到任何方法来使用标准的 Objective-C 随机数生成器来实现这一点,因为它们只有一个全局状态。
我认为拥有一个随机数生成器类可以解决我的问题。我可以创建几个可以单独重置的实例。
这样的东西已经可用了吗?我无法在目标 c 中找到任何随机数生成器实现。我想避免自己实现它,因为我没有随机数的经验,而且我认为这很难做到正确。
在我当前的项目中,我需要多个随机数生成器,因为我需要能够相互独立地重复它们的序列。到目前为止,我还没有找到任何方法来使用标准的 Objective-C 随机数生成器来实现这一点,因为它们只有一个全局状态。
我认为拥有一个随机数生成器类可以解决我的问题。我可以创建几个可以单独重置的实例。
这样的东西已经可用了吗?我无法在目标 c 中找到任何随机数生成器实现。我想避免自己实现它,因为我没有随机数的经验,而且我认为这很难做到正确。
我有一个随机类,基于Mersenne Twister算法,你可以从我的 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();
? 如果种子相同,那么您应该得到相同的随机数序列。