3

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

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

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

4

2 回答 2

6

我有一个随机类,基于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];

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

在此处输入图像描述 资源

于 2012-06-16T14:54:03.450 回答
1

你有没有尝试过

srandom(seed);

然后打电话

random();

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

于 2012-06-16T15:01:01.330 回答