2017-10-20 10 views
2

"for"がわかっているので、ループ中に順序番号を生成することができます。私はループを作るが、順序のない数字をつけたい。私は必要なものの例として、これを参照してください。Cで順序付けされていないシーケンスのループを繰り返してカウントする

for (int i = 0; i < 15; i++) 
{ 
    // Do something with "i"... 
} 

これは繰り返し、0から14順番に数えるが、私はそれを繰り返して、次のように0と14の間でランダムにカウントすると仮定します:

13, 2, 7, 0, 14, 4, 6, 1, 8, 3, 5, 15, 9, 10, 12, 11 

どうすればいいですか?

+0

数字のリストを作成し、それらをシャッフルしてから繰り返します。 – BugFinder

+0

シャッフルについては、[this](https://stackoverflow.com/a/110570/4685428)の回答 –

答えて

2

一連番号の集まりを生成してシャッフルします。以下は、そうするOrderByを使用しています。

grek40 @として
Random r = new Random(); 
foreach(int i in Enumerable.Range(0, 15).OrderBy(_ => r.Next())) 
{ 
    // Do something with "i"... 
} 

はシャッフルのためOrderByより良い方法があるコメントが、考え方は同じです:

+0

https://stackoverflow.com/questions/を参照してください。 1287567/is-use-random-and-orderby-a-good-shuffle-algorithm – grek40

+0

@ grek40 - 私は同意して編集しますが、ここの主要な部分はそうすることです:) –

0
var numbers = Enumerable.Range(0, 10).ToList(); 
var rnd = new Random(); 
for (; numbers.Count != 0;) 
{ 
    var currentNumber = numbers[rnd.Next(0, numbers.Count)]; 

    Console.WriteLine(currentNumber); 

    numbers.Remove(currentNumber); 
} 

数字が0〜10のリストを作成します私たちのリストから乱数を出してください。私たちはそれを取り除いた後、再び選択されません。

関連する問題