2012-01-11 3 views
0

私はrand()関数を使用していますが、常に同じランダムシーケンスを使用しています。クロックの値がシードされるランダム関数はありますか?そして私はこれをどのようにして行うのですか?良いとは何ですか?使用するランダム関数は、開始するたびに異なります。

+2

arc4random()。ここでの答え:http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c – colbadhombre

答えて

0

rand()およびrandom()(わずかに大きなスペース)は、使用する前に、それぞれのシード関数でシードすることを意味します。あなたは時間、またはあなたが望む他の任意の値を使用することができます:

srand(time(0)); 
srandom(time(0)); 

ここでシステム時間を取得します。明らかに定数を渡すと、実行ごとに同じシーケンスが生成されます。

また、/ dev/randomを使用して非常に高品質のランダムビットとシード自体を生成するarc4random()を使用することもできます。

+1

'arc4random()'を使用して、実際にはほとんど理由がありません。 – zaph

1

rand()には、種を指定する必要があります。シードを指定する最も良い方法は、現在の時刻を使用することです。

// specify the seed 
srand(time(NULL)); 

それとも、arc4randomを使用することができます。

+1

あなたがセキュリティに関心を持っているのであれば、時計をつけてはいけません。 – zaph

関連する問題