2017-06-14 187 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