http://msdn.microsoft.com/en-us/library/2dx6wyd4.aspxなぜminValue == maxValueはRandom.Nextにありますか?
どうやらmaxValue
は上限排他です。したがって、Random.Next(2,3)
は常に2を返します。Random.Next(2,2)
も常に2を返します。なぜ、minがこの場合maxに等しいことさえできるのでしょうか?それは誤解を招く!
http://msdn.microsoft.com/en-us/library/2dx6wyd4.aspxなぜminValue == maxValueはRandom.Nextにありますか?
どうやらmaxValue
は上限排他です。したがって、Random.Next(2,3)
は常に2を返します。Random.Next(2,2)
も常に2を返します。なぜ、minがこの場合maxに等しいことさえできるのでしょうか?それは誤解を招く!
多少の誤解を招くような慣習に過ぎません。いずれにしても、そのようなシナリオを構築することができます(毎回の出力が同じです)。これは、例えば、配列のランダムな要素を選択するために有用です:
var random = new Random();
var element = someArray[random.Next(0, someArray.Length)]; // Of course, the lower bound needn't be specified here.
編集:あなたの質問を誤解しました!私の推測では、それはa)貧弱なデザインか、b)あなたの2つの境界が潜在的に同じである場合の利便性です。私はそれが直感的ではないことに同意するだろう。
私にはちょっとしたデザインが似ています。私はmaxValue
がminValue
より厳密に大きいことに同意します。等しい場合はArgumentOutOfRangeException
を投げるべきです。
Random
にはいくつかの側面があります.1つは、暗号化された安全なソースを使用してサブクラスを作成できるように、適切にプラグイン可能(適切に文書化されている方法)にすることは本当にうれしいでしょう。それは今可能ですが、あなたは、基本的な実装についてはあまり知っている必要があり、そしてその方法はどの他のものを呼び出す:(
新しいRandom
インスタンスにあなたがループラウンドに行くたびに作成周囲に落とし穴、と明らかにスレッドセーフであることは、他の厄介されていない(静的変数)を「修正」。
基本的に、私は別の小さなイボ:(
を見てひどく驚いていませんはい、私はそれで問題ありません。常に同じ数字を生成する...それはちょうど私が(3)を試したときに3が包括的であることを期待した。それは最大
mpen