C# 生成随机词
苹果、芒果、木瓜、香蕉、番石榴、菠萝——如何使用c#随机(一个接一个)生成这些单词?请帮助我从我的单词列表中随机生成单词。您可以使用LINQ的C# 生成随机词,c#,c#-4.0,c#-3.0,c#-2.0,C#,C# 4.0,C# 3.0,C# 2.0,苹果、芒果、木瓜、香蕉、番石榴、菠萝——如何使用c#随机(一个接一个)生成这些单词?请帮助我从我的单词列表中随机生成单词。您可以使用LINQ的OrderBy方法并使用Guids获得“随机排序” Random rnd = new Random(); string GetRandomFruit() { string[] fruits = new string[] { "apple", "mango", "papaya", "banana", "guava", "pineapple" };
OrderBy
方法并使用Guid
s获得“随机排序”
Random rnd = new Random();
string GetRandomFruit()
{
string[] fruits = new string[] { "apple", "mango", "papaya", "banana", "guava", "pineapple" };
return fruits[rnd.Next(0,fruits.Length)];
}
var words = new [] {"apple", "mango", "papaya", "banana", "guava", "pineapple"};
var wordsInRandomOrder = words.OrderBy(i => Guid.NewGuid());
foreach(var word in wordsInRandomOrder)
{
Console.WriteLine(word);
}
下面的
foreach
将从单词数组中以随机顺序为每个项目提供一次。您可以编写以下代码
string[] fruits = new string[] { "apple", "mango", "papaya", "banana", "guava", "pineapple" };
Console.WriteLine(fruits[new Random().Next(0, fruits.Length)]);
您可以使用Fisher Yates对阵列执行就地洗牌:
static class ArrayMethods
{
private static readonly Random rng = new Random();
public static void Shuffle<T>(IList<T> list)
{
var r = rng;
var len = list.Count;
for(var i = len-1; i >= 1; --i)
{
var j = r.Next(i);
var tmp = list[i];
list[i] = list[j];
list[j] = tmp;
}
}
}
我认为Sasi想要一个置换算法,而不是一个随机选择的替换算法,对吗?@Phillip IMO可以用任何一种方式来解释-OP不清楚。我喜欢你的解决方案!除了Sasi在标签上注明了C#-2。你试过这个吗?创建一个新的Random()。
var arr = new[]{
"apple",
"mango",
"papaya",
"banana",
"guava",
"pineapple"
};
ArrayMethods.Shuffle(arr);
foreach(var item in arr)
//print 'em out