2016-08-29 5 views
0

私は書くことによってPRNGでObjective-Cのを播種してるObjective-CにシードされたPRNGを保存することはできますか?

srandom(seed); 

I'n C#私はPRNG離れとして変数であること保存することができます:

prng = new Random(seed); 

このことが可能ですObjective-Cにも同様に?

私が変数にPRNGを保存したいのは、すぐに生成された数値に確定的な結果が必要なことです。私は、別の機能がPRNGを再シードするというリスクを抱かせたくありません。

私はいくつかの研究を試みました。例えば、別のライブラリをリストしたこの記事を読むと、http://nshipster.com/random/が見つかりましたが、何も見つかりませんでした。

答えて

0
それはあなたがランダムな番号を保存するのを助けることができるコードの下

使用:seedを設定し、それはあなたを助けるHopw ランド()

を使用する

unsigned int seed = 13; /* Choose value for the seed */ 
    int random; 

    srand(seed);    /* Set the seed       */ 
    random = rand();   /* Generate a random number    */ 

使用srandを。あなたの問題が解決されたかどうか教えてください。

+0

後で他の関数が乱数を生成しても、そのシードされたPRNGには影響を与えないように、シードされたPRNGを保存します。 – user1283776

+0

次にintをランダムに取る。グローバル変数としてチェックし、それが無ければPRNGを生成し、そうでなければそれを使用する。 –

1

Cでは、srand()とrand()はC#のようにオブジェクトには関係しません。 srand()は単にグローバル変数を設定し、rand()はそれを読み込みます。私が覚えている限り、Objective-CはオリジナルのC実装をこのライブラリに使用しています。関係するオブジェクトは存在しないので、関数rand()へのすべての呼び出しは、常にsrand()によって設定された同じPRNGシードにアクセスします。

これは解決策がないことを意味するものではありません。最初に(おそらく最善の解決策ではない)、オブジェクトとして独自のPRNGを作成しています。もう一つの選択肢は、オブジェクト指向のPRNGライブラリ(私は通常、Objective-Cでコード化していないので、私は推薦されていません)を見つけることです。最後に、rand()で一般的に使用されている標準に従うことができ、プログラムの初めにsrand()を1回呼び出すだけで、アプリケーションに適しています。

1

GameplayKit Foundationライブラリは、クラスGKMersenneTwisterRandomSourceを提供します。 initWithSeed:を使用して、独立してシードされた複数のインスタンスを作成し、心臓のコンテンツに渡すことができます。

+0

完璧に見える!残りの詳細を教えてもらえますか?私が打ち込んだ(at)import GameplayKit;エラーメッセージが表示されます:モジュールが無効になっているときに、(at)importを使用します。 #importステートメントでこのライブラリをインポートすることは可能ですか? – user1283776

+0

それを手助けできない、私はそれをSwiftから使います。 – pjs

関連する問題