2016-04-11 8 views
-1

Wie würde ich linq Elemente randomisieren?C# - Randomizing Linq Elemente

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

wo es (Environment.NewLine + words); hat Ich möchte Randomisierung, was Worte ist. So zum Beispiel, könnte diese Ausgaben sein:

BCAD, ac, da, cab, abb,

zum Beispiel.

+1

Sie versuchen, von Alphabeten, um herauszufinden. Suche danach und du wirst hoffentlich viele Ideen bekommen. – Rahul

Antwort

0

Sie so etwas wie tun:

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

wo someProbability bestimmt, wie lange ist Ihre neue Wörter wahrscheinlich.

+0

Ich bekomme einen Fehler bei Range 'Random enthält keine Definition für Range' – iKonja

+0

Mein schlechtes. Ich habe die Unity-API mit System verwechselt. Fügen Sie oben die Zeile 'Random rand = new Random();' hinzu und ersetzen Sie 'Random.Range' durch' rand.Next' und das sollte funktionieren. – sowrd299

+0

Danke, das ist besser :) – iKonja

0

Sie können dies eine zufällige Reihenfolge erhalten.

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

Zum Löschen müssen Sie das selbst herausfinden. Sieht auch so aus, als ob du Wiederholungen willst, aber das sollte dir den Anfang machen.

wird dies die Besten 0 bis 4

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

Eine einfache Möglichkeit, zufällige Worte würden zu generieren:

mögliche Kombination
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()); 
}