2017-06-14 87 views
0

我需要做的是隨機洗牌25號隨機洗牌數組

int[] arr = Enumerable.Range(0, 24).ToArray(); 

因此,它仍然擁有所有從0到24,但在一個隨機順序號的數組。 做什麼最簡單的方法?

@edit;

namespace WindowsFormsApp1 
{ 
    public partial class Form1 : Form 
    { 
     Random rnd = new Random(); 
     int[] arr = Enumerable.Range(0, 24).OrderBy(c => rnd.Next()).ToArray(); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 
    } 
} 
+0

'VAR隨機=新的隨機(); arr = arr.OrderBy(i => random.Next())。ToArray();' –

+2

谷歌「Fisher-Yates shuffle」的想法。 – rossum

回答

1

您可以OrderBy(c => rnd.Next())這樣

Random rnd = new Random(); 
int[] arr = Enumerable.Range(0, 24).OrderBy(c => rnd.Next()).ToArray(); 
+0

Visual不會爲我運行這個。它強調'隨機',並說 '字段初始值設定項不能引用非靜態字段,方法或屬性' – Ayukawa

+0

@Ayukawa查看我更新的答案。我將該變量的名稱重命名爲「rnd」。固定和否應該工作。嘗試一下。 –

+0

我實際上注意到了這個錯誤,並在兩種情況下都將「rnd」更改爲「random」,所以這不是問題。 – Ayukawa