2011-06-12 8 views
-2

私は2つの文字列g1とg2を持っています。私は、cointossのようにg1、g2のどちらを使うかをランダムに決めています。 g + coin()のようなことをするにはどうしたらいいですか? coin()が返す値に応じてg1、またはg2を出力しますか?値の数を使用して返される整数C#

+2

何を試しましたか?それは動作しますか?そうでない場合は、どうしてですか?今のように、これは「本当の質問ではない」です。 –

+0

'coin'メソッドはどのように書いてありますか?いくつかのコードを追加します。 – Amy

答えて

2

方法についてちょうど:配列の

return (coin() == 'heads' ? g1 : g2); 
+0

これがポップアップしたとき、私は 'switch'文を壊していました!コーヒーの時間... – aligray

0

ストアの両方:その後

string[] g = { "g1", "g2" }; 

、乱数ロール:

var random = new Random(); 
int index = random.Next(2); 

そして最後に、その時に文字列を取得しますインデックス:

string choice = g[index]; 
1
string SelectOne(string g1, string g2) 
{ 
    return (new Random().NextDouble() > 0.5) ? g1 : g2; 
} 
+0

静的ランダムインスタンスまたはクラス内の少なくとも同じインスタンスを使用して、 'SelectOne'への高速呼び出しが同じ「ランダム」値にならない場合があります。 – vcsjones

0

C#でローカル変数名を使用することはできません(ただし、リフレクションによってメンバ名を使用することはできます)。

あなたは、昔ながらのifを使用することができ、次のいずれか

if (coin() == 1) 
    result = g1; 
else 
    result = g2; 

たり、配列を使用できます。

var gs = new[] { g1, g2 }; 
var result = gs[coin() - 1]; 
0

は、このコードを使用します。

Random rd = new Random(); 

string strtouse = "g" + (rd.Next(2) + 1); 

今uが以下のように使用することをスニペットから

string test = (string)this.GetType().GetField(strtouse).GetValue(this); 

これはあなたの望みを達成する良い方法ではありませんが、辞書を使用する方が良い方法です。

関連する問題