Mélanger un tableau en C#

Muhammad Maisam Abbas 16 février 2024
  1. Mélanger un tableau avec la classe Random en C#
  2. Mélangez un tableau avec la classe RNGCryptoServiceProvider en C#
Mélanger un tableau en C#

Ce didacticiel abordera les méthodes pour mélanger un tableau en C#.

Mélanger un tableau avec la classe Random en C#

La classe Random génère des nombres aléatoires en C#. La méthode Random.Next() génère une valeur entière aléatoire. Nous pouvons utiliser la méthode Random.Next() avec LINQ pour mélanger un tableau en C#.

using System;
using System.Linq;
using System.Security.Cryptography;

namespace randomize_array {
  class Program {
    static void Main(string[] args) {
      int[] arr = { 1, 2, 3, 4, 5 };
      Random random = new Random();
      arr = arr.OrderBy(x => random.Next()).ToArray();
      foreach (var i in arr) {
        Console.WriteLine(i);
      }
    }
  }
}

Production:

3 4 5 1 2

Dans le code ci-dessus, nous avons mélangé le tableau d’entiers arr avec la méthode Random.Next() et LINQ en C#. Nous avons d’abord généré un index aléatoire avec la méthode Random.Next() et placé chaque élément à un index aléatoire avec la méthode OrderBy(). Nous avons ensuite converti la structure de données résultante en tableau avec la méthode ToArray().

Mélangez un tableau avec la classe RNGCryptoServiceProvider en C#

La classe RNGCryptoServiceProvider en C# génère des nombres aléatoires. Cette méthode est plus fiable que l’approche précédente car la classe RNGCryptoServiceProvider est plus aléatoire que la classe Random. La classe RNGCryptoServiceProvider est principalement utilisée pour le chiffrement, elle est donc plus sécurisée que la classe Random. La méthode GetBytes() de la classe RNGCryptoServiceProvider permet de remplir un tableau d’octets avec une séquence de valeurs aléatoires. Nous pouvons utiliser la méthode Convert.ToInt32() pour convertir cette valeur d’octet aléatoire en un entier. Nous pouvons alors utiliser cet entier aléatoire comme index pour chaque élément. L’exemple de code suivant nous montre comment mélanger un tableau avec la classe RNGCryptoServiceProvider en C#.

using System;
using System.Linq;
using System.Security.Cryptography;

namespace randomize_array {
  class Program {
    static int Next(RNGCryptoServiceProvider random) {
      byte[] randomInt = new byte[4];
      random.GetBytes(randomInt);
      return Convert.ToInt32(randomInt[0]);
    }
    static void Main(string[] args) {
      int[] arr = { 1, 2, 3, 4, 5 };
      RNGCryptoServiceProvider random = new RNGCryptoServiceProvider();
      arr = arr.OrderBy(x => Next(random)).ToArray();
      foreach (var i in arr) {
        Console.WriteLine(i);
      }
    }
  }
}

Production:

5 1 2 4 3

La logique suivie dans cet exemple est la même que l’approche précédente. La différence est que nous utilisons ici la classe RNGCryptoServiceProvider pour générer un index aléatoire pour notre tableau. Nous avons défini la méthode Next() qui génère un index entier aléatoire en utilisant la classe RNGCryptoServiceProvider.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

Article connexe - Csharp Array