3

私の現在のプロジェクトでは、互いに独立してシーケンスを繰り返すことができる必要があるため、複数の乱数ジェネレーターが必要です。これまでのところ、標準のObjective-c乱数ジェネレーターを使用してこれを実現する方法は見つかりませんでした。これは、グローバル状態が1つしかないためです。

乱数ジェネレータークラスがあれば問題は解決すると思います。個別にリセットできるインスタンスをいくつか作成できました。

このようなものはすでに利用可能ですか?Objectivecで乱数ジェネレーターの実装を見つけることができませんでした。乱数の経験がなく、うまくいかないので、自分で実装するのは避けたいと思います。

4

2 に答える 2

6

メルセンヌツイスターアルゴリズムに基づいたランダムなクラスがあります。これは、ここのドロップボックスから取得できます。

それはかなり古く、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 に答える