2016-06-23 5 views
-2

C#でintを生成する乱数を生成したいと思います。1とCの32ビット整数の最大値の間に100%の乱数を生成するには

私は時々乱数が信頼できないと聞いています。これは私に乱数を発生させるための問題でしょうか?

誰かがこれについてコメントし、1と最大32ビット整数の間の乱数を生成する非常に信頼性の高い方法を提案できますか?

+1

あなたの要件がこのような大きな範囲内の単一の乱数である場合、それは100%ランダム(繰り返されない)になります。この場合、信頼できることをあなたが意味するものを私に教えてください。私は質問がより明確で具体的であるべきだと思う。 –

+2

*の*の乱数は何ですか? 「信頼できる」とはどういう意味ですか? – Blorgbeard

答えて

3
Random random = new Random(); 
for(someloop) { 
    int randomValue = random.Next(0, int.MaxValue) + 1; 
} 

これは擬似ランダムであることに注意してください。この例では、ループ外のランダムなインスタンスを作成しているため、現在の同じ時刻に再シードを取得することはありません。 randomを広範囲に使用する場合は、その周囲にシングルトンラッパーを作成し、アプリケーション全体にランダムなインスタンスを使用することもできます(スレッドの問題は粗いことに注意してください)。

+0

"1と...の間" – Blorgbeard

+0

実際には、 '.Next'は排他的な上限を持つので、' new Random()。Next(0、int.MaxValue)+ 1; 'を実行する必要があります。 getは 'int.MaxValue - 1'になります。 –

+0

ありがとうございました。これをループ内でどのように使用できるかの例を私に教えてください。ループ内の.Next値を取得する方法はありますか? – Alan2

関連する問題