对于我的计算机科学入门课程,我必须创建一个应用程序来选择具有各种功能的餐馆,但我无法弄清楚如何随机化数组。 以下是我的代码。
string[] myRestaurants = new string[9];
myRestaurants[0] = "Wendy's";
myRestaurants[1] = "Arby's";
myRestaurants[2] = "Olive Garden";
myRestaurants[3] = "The Pie";
myRestaurants[4] = "The Cheesecake Factory";
myRestaurants[5] = "Beto's";
myRestaurants[6] = "Dillinger's Saloon";
myRestaurants[7] = "Dayz Alpher";
myRestaurants[8] = "Firehouse subs";
var nextArray = myRestaurants.ToList();
Random rng = new Random();
int n = nextArray.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = nextArray[k];
nextArray[k] = nextArray[n];
nextArray[n] = value;
//bang
}
答案 0 :(得分:5)
您可以使用LINQ和OrderBy
方法将其随机化..再加上您的Random
类:
myRestaurants = myRestaurants
.OrderBy(x => myRandom.Next(myRestaurants.Length))
.ToArray();
答案 1 :(得分:1)
以下示例随机拍摄照片。
Random rand=new Random();
string[] RandomArray = myRestaurants.OrderBy(r => rand.Next()).ToArray();
答案 2 :(得分:0)
这是使用Fisher-Yates机制的通用实现:
public static class Extensions
{
public static void Shuffle<T>(this IList<T> list)
{
var rnd = new Random();
for (int i = list.Count - 1; i >= 0; i--)
{
var r = rnd.Next(i + 1);
T value = list[r];
list[r] = list[i];
list[i] = value;
}
}
}
用法:
myRestaurants.Shuffle();
示例输出: