2016-04-11 51 views
-1

如何随机化linq项目?C# - 随机化Linq项目

  var words = new[] { "a", "b", "c", "d" }; 
     richTextBox1.AppendText(Environment.NewLine + words); 

地方有(Environment.NewLine + words); 我想是随机什么话。因此,例如,这些可能是输出:

BCAD,AC,DA,驾驶室,ABB,

例如。

+1

您正在试图找出字母的可能组合。搜索它,你会希望得到很多想法。 – Rahul

回答

0

你可以这样做:

var newWords = new List<string>(); 
while(Random.Range(0,someProbability) != 0){ 
    newWords.Add(words[Random.Range(0,words.Length)]); 
} 
words = newWords.ToArray(); 

其中someProbability决定了你的新词多长时间可能是。

+0

我得到一个错误的范围'随机不包含范围的定义' – iKonja

+0

我的不好。我把Unity API与System混淆了。将“Random rand = new Random();'行添加到顶部,然后用'rand.Next'替换'Random.Range',这应该起作用。 – sowrd299

+0

谢谢,这是更好的:) – iKonja

0

您可以使用此获得随机顺序。

Random rand =new Random(); 
words.OrderBy(x => rand.Next()).ToArray() 

对于删除你需要弄清楚你的自我。也看起来像你想重复,但这应该让你开始。

这将取前0-4

words.OrderBy(x =>rand.Next()).Take(rand.Next(0,4)).ToArray() 
0

一个简单的方法来产生随机的话应该是:

public static string RandomString(int length) 
{ 
    const string chars = "abcdefghijklmnopqrstuvwxyz"; 
    var random = new Random(Guid.NewGuid().GetHashCode()); 
    return new string(
     Enumerable.Repeat(chars, length) 
     .Select(s => s[random.Next(s.Length)]).ToArray()); 
}