Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成随机词_C#_C# 4.0_C# 3.0_C# 2.0 - Fatal编程技术网

C# 生成随机词

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" };

苹果、芒果、木瓜、香蕉、番石榴、菠萝——如何使用c#随机(一个接一个)生成这些单词?请帮助我从我的单词列表中随机生成单词。

您可以使用LINQ的
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