Csharp/C#教程:如何随机化数组中的数字分享


如何随机化数组中的数字

我有一个像这样的数组:

int[] numbers = new [] { 1, 2, 3, 4 }; 

我想随机化这个(每次都不同),这样它就会使另一个数组具有相同的大小和数字,但每次都以不同的顺序排列。

尝试这样的事情:

 System.Random rnd = new System.Random(); var numbers = Enumerable.Range(1, 4).OrderBy(r => rnd.Next()).ToArray(); 

这是一个可行的方法:

 public List Randomize(int[] numbers) { List randomized = new List(); List original = new List(numbers); Random r = new Random(); while (original.Count > 0) { int index = r.Next(original.Count); randomized.Add(original[index]); original.RemoveAt(index); } return randomized; } 

编辑:

另一种方法是为IEnumerable集合使用LINQ扩展方法:

 var random = new Random(); List randomized = numbers.OrderBy(x => random.Next()).ToList(); 

如果你想拥有一个数组而不是List你可以调用.ToArray()

当然,这适用于任何int数组,不仅适用于1, 2, 3, ..., n 。 您甚至可以在T中使该方法通用。

 public static void Shuffle(T[] array) { Random random = new Random(); for (int i = 0; i < 10; i++) { int idx = random.Next(i, 10); //swap elements T tmp = array[i]; array[i] = array[idx]; array[idx] = tmp; } } 

这甚至要注意价值观不重复;

 for(int i=0;i<4;i++) { int no_repeat = -1; int x,j; while(no_repeat!=1) { x=rand()%4; for(j=0;j<4;j++) { if(numbers[j]==x) break; } if(j==4) no_repeat=1; } if(no_repeat) numbers[i]=x; } 

在我看来,最简单的方法是:

  int[] grid = new int[9];//size of array Random randomNumber = new Random();//new random number var rowLength = grid.GetLength(0); var colLength = grid.GetLength(1); for (int row = 0; row < rowLength; row++) { grid[col] = randomNumber.Next(4)+1;//Fills grid with numbers from //1-4 Console.Write(String.Format("{0}t", grid[col])); //Displays array in console Console.WriteLine(); } 

有用:

上述就是C#学习教程:如何随机化数组中的数字分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

 numbers = numbers.OrderBy(s => Guid.NewGuid()).ToArray(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1009564.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐