Verwenden von LINQ zum generieren einer zufälligen Größe Sammlung gefüllt mit Zufallszahlen
Ich bin zu lernen, LINQ und jetzt Frage ich mich, ob es irgendeinen Weg gibt, es zu verwenden, um tatsächlich eine Liste erstellen, anstatt nur das Abfragen einer bereits erstellten Liste. Also ich habe den folgenden code mit for-Schleife um eine zufällige Größe der Liste von Ganzzahlen und füllt Sie mit Zufallszahlen, ist es eh zu konvertieren, um LINQ?
var ret = new List<int>();
for (var i = 0; i < _rand.Next(100); i++)
ret.Add(_rand.Next(10));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man dies tun:
new int[_rand.Next(100)].Select(r => _rand.Next(10)).ToList()
?Enumerable.Range
eigentlich keine Zuordnung intern erzeugt eine Reihe von Ganzzahlen, die Verwendung von verzögerten AusführungKönnte man es so machen:
Mithilfe von LINQ hier geben wird, schlechtere performance und ich bin nicht sicher, es verbessert die Lesbarkeit entweder. Es ist vielleicht das beste, es zu tun mögen dieses:
new int[_rand.Next(100)].Select(r => _rand.Next(10)).ToList()
?Btw, ich denke, in deiner ursprünglichen Lösung, die Sie nicht immer genau das, was Sie erwarten, da _rand.Neben(100) ausgewertet, jeder loop-iteration. Also die Liste die Länge hat nicht die gleichmäßige Verteilung in [0; 100)
Können Sie NBuilder:
Den Vorteil, NBuilder ist, dass Sie können es nicht nur nutzen, um einfach erstellen Sie umfangreiche Listen von primitiven (trivial), aber auch, um einfach erstellen Sie umfangreiche Listen von komplexen Typen (nicht so trivial):
Ich denke, es ist nicht elegant zu ersten generieren einer Sequenz von zahlen, nur um es wegzuwerfen.
Diese Methoden liefern Zufallszahlen, die auf der Stelle (Sie müssen mit Ausführlichkeit obwohl):
Und ich Liebe, wie kann ich das gleiche schreiben in F#: