I need to generate repeatable sequences of random numbers for a game. For each level I give it the seed and want the level to unfold the same way it did before. I can guarantee that the calls to any random function will be in exactly the same order, so provided I get the same sequence out of the random generator, I'm good.

First thought was to use srand() [ yes it's a bad random number generator but it's good enough for what want ] however it's global and it's quite possible I'll have more than one 'level' running at the same time. So I need an object which I can give a seed to and will generate random numbers from that seed, and I need it to interoperate independently of any other object of the same type being queried for numbers.

I was thinking of wrapping the random(3) stuff [ initstate, random, setstate .. etc ] in a cocoa class and using them, just using setstate() each time before calling random(). I can guarantee this all on one thread so I will not have the issue that setstate() is called in one thread and random in another, thus totally messing up someone else's generator.

I had a hunt for an objective-C class which already did this but didn't find one. Anyone know of one or a better solution to this before I go write it? The sort of methods I'd expect are ..

MyRandom *myRandom = [ [ MyRandom alloc ] initWithSeed:seed ];
int nextRandom = [ myRandom nextRandom ];

where the sequence produced by myRandom is predictable and not affected by any other MyRandom objects out there.




_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to