2017-12-07 4 views
0

どのように変数を循環させ、それぞれにランダムな文字を割り当てることができますか?各変数にランダムな文字を割り当てます

var1 = RandomLetter(); 
var2 = RandomLetter(); 
var3 = RandomLetter(); 
var4 = RandomLetter(); 
var5 = RandomLetter(); 

これは、すべてが同じ文字持つ生成されます:

var1 = var2 = var3 = RandomLetter(); 

私は、プロセスを短縮する方法を探していますが、私はする必要がありますする必要はないと

これを50以上の変数に行います。

最初は私がforeachループを使っていましたが、それらはnullであり、ループするためにコレクション内で開始しません。

// Variables 
public static char var1, var2, var3, var4, var5; 


// Generate Random Letter 
public static Random random = new Random(); 
public static char RandomLetter() 
{ 
    const string text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    int index = random.Next(text.Length); 
    return text[index]; 
} 
+2

あなたはをループし、コレクションにそれらを置くことができませんか? – Equalsk

+1

配列を使うことができません: 'var letters = new char [50];' +それを埋めるためのループ? –

+0

'文字配列' – zey

答えて

1

あなたが(無関係な)数字の配列を作成し、ランダムな文字にすべての(無関係な)数を変換することができます。

var randomLetterList = Enumerable.Range(0, 50) 
          .Select(x => RandomLetter()) 
          .ToArray(); 

Enumerable.Range(0, 50) 

これは、0から始まる、50個の番号のリストを返す:[ 0 , 1 , 2 , ... , 49 ]

.Select(x => RandomLetter()) 

これは実際のそのランダム文字(通知にリストのすべての要素を回転させます数値のは決して使用されません):eg [ 'b' , 'h' , 'm' , ... , 'o' ]

ここで注意すべき重要なことは、最初のリストに数字があるので、結果リストにが正確に個の文字が含まれることです。

.ToArray(); 

これはちょうどchar[]IEnumerable<char>を変換します。これにより、インデックスを使用して文字にアクセスできます。

代わりにあなたの代わりに使用

  • var1
  • var2
  • var3
  • ...
  • var50

を使用する:

  • randomLetterList[0]
  • randomLetterList[1]
  • randomLetterList[2]
  • ...
  • randomLetterList[49]
5

、別の変数を使用する代わりに、コレクションを使用しないでください:

List<char> letters = 
    Enumerable.Range(1,50) 
       .Select(i => RandomLetter()) 
       .ToList(); 
+0

ベストアンサー – zey

+1

@MongZhu答えの要点は、*あなたは*ではありません。 – Servy

+1

@ MonZhu:OPは最初に別々の変数を使うべきではありません。 'myVar1'は' myVarList [1] 'と同様に簡単にアクセスできます。実際にループを使ってある時点でリストを処理できるという利点があります。 – Flater

関連する問題