Mélanger une liste en C#
-
Mélanger une liste avec Linq en
C#
-
Mélangez une liste avec l’algorithme de lecture aléatoire de Fisher-Yates en
C#
Dans ce didacticiel, nous aborderons les méthodes de lecture aléatoire d’une liste en C#.
Mélanger une liste avec Linq en C#
La requête intégrée au langage ou Linq
fournit un moyen d’intégrer la capacité des requêtes en C#. Le Linq fournit des fonctionnalités tout comme SQL en C#. Nous pouvons utiliser Linq pour randomiser une liste. L’exemple de code suivant nous montre comment nous pouvons mélanger une liste avec Linq en C#.
using System;
using System.Collections.Generic;
using System.Linq;
namespace shuffle_list {
class Program {
static void Main(string[] args) {
List<int> list1 = new List<int>() { 1, 2, 3, 4, 5 };
var rnd = new Random();
var randomized = list1.OrderBy(item => rnd.Next());
foreach (var value in randomized) {
Console.WriteLine(value);
}
}
}
}
Production:
1 4 5 3 2
Nous avons d’abord initialisé la liste list1
puis mélangé la liste list1
avec la fonction random.next()
et la fonction OrderBy()
de Linq en C#. La méthode ci-dessus peut également être utilisée pour mélanger une liste d’objets en C#. L’exemple de code suivant nous montre comment mélanger une liste d’objets avec Linq en C#.
using System;
using System.Collections.Generic;
using System.Linq;
namespace shuffle_list {
public class Person {
string name;
public Person(string name) {
Name = name;
}
public string Name {
get => name;
set => name = value;
}
}
class Program {
static void Main(string[] args) {
List<Person> list1 = new List<Person>();
list1.Add(new Person("Person 1"));
list1.Add(new Person("Person 2"));
list1.Add(new Person("Person 3"));
list1.Add(new Person("Person 4"));
list1.Add(new Person("Person 5"));
var rnd = new Random();
var randomized = list1.OrderBy(item => rnd.Next());
foreach (var value in randomized) {
Console.WriteLine(value.Name);
}
}
}
}
Production:
Person 5 Person 2 Person 1 Person 3 Person 4
Nous avons mélangé une liste d’objets de la classe Person
avec le Linq en C#.
Mélangez une liste avec l’algorithme de lecture aléatoire de Fisher-Yates en C#
L ‘algorithme de mélange de Fisher-Yates mélange une structure de données finie en C#. L’algorithme de mélange Fisher-Yates fournit un mélange non biaisé en C#. Il stocke séquentiellement chaque élément de la liste dans un index aléatoire à l’intérieur de la liste. L’exemple de codage suivant nous montre comment mélanger une liste avec l’algorithme de mélange Fisher-Yates en C#.
using System;
using System.Collections.Generic;
using System.Linq;
namespace shuffle_list {
static class ExtensionsClass {
private static Random rng = new Random();
public static void Shuffle<T>(this IList<T> list) {
int n = list.Count;
while (n > 1) {
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
}
class Program {
static void Main(string[] args) {
List<int> list1 = new List<int>() { 1, 2, 3, 4, 5 };
list1.Shuffle();
foreach (var value in list1) {
Console.WriteLine(value);
}
}
}
}
Production:
5 1 4 3 2
Nous avons mélangé une liste d’entiers list1
avec l’algorithme de mélange Fisher-Yates en C#. Nous avons créé une méthode d’extension pour implémenter l’algorithme de Fisher-Yates en C#. Pour créer une méthode d’extension, nous avons dû définir la fonction Shuffle()
dans une autre classe static
appelée ExtensionClass
. Le même algorithme peut également être utilisé pour mélanger une liste d’objets, comme illustré dans les codes ci-dessous.
using System;
using System.Collections.Generic;
using System.Linq;
namespace shuffle_list {
public class Person {
string name;
public Person(string name) {
Name = name;
}
public string Name {
get => name;
set => name = value;
}
}
static class ExtensionsClass {
private static Random rng = new Random();
public static void Shuffle<T>(this IList<T> list) {
int n = list.Count;
while (n > 1) {
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
}
class Program {
static void Main(string[] args) {
List<Person> list1 = new List<Person>();
list1.Add(new Person("Person 1"));
list1.Add(new Person("Person 2"));
list1.Add(new Person("Person 3"));
list1.Add(new Person("Person 4"));
list1.Add(new Person("Person 5"));
list1.Shuffle();
foreach (var value in list1) {
Console.WriteLine(value.Name);
}
}
}
}
Production:
Person 1 Person 4 Person 2 Person 5 Person 3
Nous avons mélangé une liste d’objets de la classe Person
avec l’algorithme de Fisher-Yates en C#. Nous avons créé une méthode d’extension pour implémenter l’algorithme de Fisher-Yates en C#. Pour créer une méthode d’extension, nous avons dû définir la fonction Shuffle()
dans une autre classe static
appelée ExtensionClass
.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn