Mische ein Array in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Mische ein Array mit der Klasse Random in C#
  2. Mischen Sie ein Array mit der Klasse RNGCryptoServiceProvider in C#
Mische ein Array in C#

In diesem Tutorial werden die Methoden zum Mischen eines Arrays in C# erläutert.

Mische ein Array mit der Klasse Random in C#

Die Klasse Random generiert Zufallszahlen in C#. Die Methode Random.Next() generiert einen zufälligen ganzzahligen Wert. Wir können die Methode Random.Next() mit LINQ verwenden, um ein Array in C# zu mischen.

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);
      }
    }
  }
}

Ausgabe:

3
4
5
1
2

Im obigen Code haben wir das Array der Ganzzahlen arr mit der Methode Random.Next() und LINQ in C# gemischt. Wir haben zuerst einen Zufallsindex mit der Methode Random.Next() generiert und jedes Element mit der Methode OrderBy() an einem Zufallsindex platziert. Anschließend haben wir die resultierende Datenstruktur mit der Methode ToArray() in ein Array konvertiert.

Mischen Sie ein Array mit der Klasse RNGCryptoServiceProvider in C#

Die Klasse RNGCryptoServiceProvider in C# generiert Zufallszahlen. Diese Methode ist zuverlässiger als der vorherige Ansatz, da die Klasse RNGCryptoServiceProvider zufälliger ist als die Klasse Random. Die Klasse RNGCryptoServiceProvider wird hauptsächlich für die Verschlüsselung verwendet und ist daher sicherer als die Klasse Random. Die Methode GetBytes() der Klasse RNGCryptoServiceProvider wird verwendet, um ein Array von Bytes mit einer Folge von Zufallswerten zu füllen. Wir können die Methode Convert.ToInt32() verwenden, um diesen zufälligen Bytewert in eine Ganzzahl umzuwandeln. Wir können diese zufällige Ganzzahl dann als Index für jedes Element verwenden. Das folgende Codebeispiel zeigt uns, wie wir ein Array mit der Klasse RNGCryptoServiceProvider in C# mischen können.

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);
      }
    }
  }
}

Ausgabe:

5
1
2
4
3

Die in diesem Beispiel verfolgte Logik ist dieselbe wie beim vorherigen Ansatz. Der Unterschied besteht darin, dass wir hier die Klasse RNGCryptoServiceProvider verwenden, um einen Zufallsindex für unser Array zu generieren. Wir haben die Methode Next() definiert, die mit der Klasse RNGCryptoServiceProvider einen zufälligen Ganzzahlindex generiert.

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

Verwandter Artikel - Csharp Array