2010-11-18 9 views
2

C#で2つの数値の間の乱数を選択する最も良い方法は何ですか?ランダム関数C#

たとえば、値が23で値が9999の場合、これらの2つの数値の間で乱数を選択するのは正しいでしょうか? ありがとうございました

+0

範囲から一意に選択する必要がありますか? –

答えて

7

これは、整数か倍精度浮動小数点型のどちらを探しているかによって異なります。整数の場合Random.Next(minValue, maxValue)

指定された範囲内の乱数を返します。

minValueはインクルードですが、maxValueは排他的です。

指定された範囲内でランダムなdoubleを選択する同等の方法はありません。代わりにNextDoubleメソッドを使用して、0.0〜1.0の間の乱数を選択し、線形変換を使用して範囲を拡大、縮小、および/または変換します。

+0

本当ですか?私はこのコードをVSに書きますが、ランダム関数には「次へ」のようなサブがありません。あなたの援助のためにTnx – Amra

+0

@Eva:それはインスタンスメソッドです - あなたはランダムオブジェクトを必要とします(例えばあなたのプログラムが始まるときに作成することができます)。 –

+0

@Eva - それはあなたがやろうとしている場合は静的なNext関数はないので、単にRandom.Nextを書くことはできません。詳細は私の答えを見てください。 –

12

は、このようなランダムなクラスを使用します。

Random rnd = new Random(); 
rnd.Next(23, 10000); 

はあなただけそれが本当にあなたのためにランダムな値を生成することを確認するために、一度ごRNDオブジェクトを初期化することを確認します。

あなたは、例えば、このループを作る場合:

for(int i = 0 ; i < 10; i++){ 
    Random rnd = new Random(); 
    var temp = rnd.Next(23, 10000); 
} 

tempが同じシードがRNDオブジェクトを生成するために使用されているので、毎回同じであってもよいが、このようになります:

Random rnd = new Random(); 
for(int i = 0 ; i < 10; i++){ 
    var temp = rnd.Next(23, 10000); 
} 

10個の固有の乱数が生成されます(もちろん、偶然にも2つ以上の数字が同じでもかまいません)

+1

+1、「ランダム」の典型的なつかみを説明します。 –

+0

ありがとうございます。私がテキストファイルからランダムな文字列を選択したいのであれば、私は何をするつもりですか? – Amra

+0

@Eva:最も簡単な方法は、テキストファイルからすべての行を読み込み、それらをすべて覚えて数えてから、その数に基づいて乱数を選択することです。 –