Neue Random-Funktionen in .Net8.0

    • C#
    • .NET 7–8

      Neue Random-Funktionen in .Net8.0

      Hallo Community

      Die Random.Shared gibt es seit .Net6.0, und die ist sogar ThreadSave. Neu hinzugekommen sind in .Net8.0 die Methoden GetItems(Of T) und Shuffle(of T), und wie man erkennen kann, sind die für jeden DatenType zugänglich.

      Freundliche Grüsse

      exc-jdbi


      Hier eine kleine Abhandlung. Das Programm findet Ihr im Anhang.

      C#-Quellcode

      1. interface IRandom
      2. {
      3. public const string AlphaNumeric = "0123456789";
      4. public const string AlphaLower = "abcdefghijklmnopqrstuvwxyz";
      5. public const string AlphaUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      6. public const string AlphaLowerUpper = AlphaLower + AlphaUpper;
      7. public const string AlphaLowerNumeric = AlphaLower + AlphaNumeric;
      8. public const string AlphaUpperNumeric = AlphaUpper + AlphaNumeric;
      9. public const string AlphaLowerUpperNumeric = AlphaLower + AlphaUpper + AlphaNumeric;
      10. }

      C#-Quellcode

      1. private static void RandomTest()
      2. {
      3. var rand = Random.Shared;
      4. var dbl_1 = rand.NextDouble();
      5. var dbl_2 = Enumerable.Range(0, 1000)
      6. .Select(x => rand.NextDouble()).ToArray();
      7. var dbl_3 = rand.GetItems(dbl_2, 100);
      8. rand.Shuffle(dbl_2);
      9. var sgn_1 = rand.NextSingle();
      10. var sgn_2 = Enumerable.Range(0, 1000)
      11. .Select(x => rand.NextSingle()).ToArray();
      12. var sgn_3 = rand.GetItems(sgn_2, 100);
      13. rand.Shuffle(sgn_2);
      14. var int8_1 = new byte[1000];
      15. rand.NextBytes(int8_1);
      16. var int8_2 = Enumerable.Range(0, 1000)
      17. .Select(i => (byte)i).ToArray();
      18. var int8_3 = rand.GetItems(int8_2, 100);
      19. rand.Shuffle(int8_2);
      20. var int32_1 = rand.Next();
      21. var int32_2 = rand.Next(1500);
      22. var int32_3 = rand.Next(1500, 2500);
      23. var int32_4 = rand.Next(-1500, 2500);
      24. var int32_5 = Enumerable.Range(0, 1000).ToArray();
      25. rand.Shuffle(int32_5);
      26. var int64_1 = rand.NextInt64();
      27. var int64_2 = rand.NextInt64(1500);
      28. var int64_3 = rand.NextInt64(1500, 2500);
      29. var int64_4 = rand.NextInt64(-1500, 2500);
      30. var int64_5 = Enumerable.Range(0, 1000)
      31. .Select(Convert.ToInt64).ToArray();
      32. rand.Shuffle(int64_5);
      33. var alphastr = IRandom.AlphaLowerUpperNumeric;
      34. var chars_1 = rand.GetItems<char>(alphastr, 100);
      35. var string_1 = string.Join("", chars_1);
      36. var chars_2 = rand.GetItems<char>(alphastr, alphastr.Length);
      37. var string_2 = string.Join("", chars_2);
      38. var chars_3 = alphastr.ToCharArray();
      39. rand.Shuffle(chars_3);
      40. var string_3 = string.Join("", chars_3);
      41. }


      Und hier noch in VbNet

      VB.NET-Quellcode

      1. Public MustInherit Class ARandom
      2. Public Const AlphaNumeric As String = "0123456789"
      3. Public Const AlphaLower As String = "abcdefghijklmnopqrstuvwxyz"
      4. Public Const AlphaUpper As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      5. Public Const AlphaLowerUpper As String = AlphaLower & AlphaUpper
      6. Public Const AlphaLowerNumeric As String = AlphaLower & AlphaNumeric
      7. Public Const AlphaUpperNumeric As String = AlphaUpper & AlphaNumeric
      8. Public Const AlphaLowerUpperNumeric As String = AlphaLower & AlphaUpper & AlphaNumeric
      9. End Class

      VB.NET-Quellcode

      1. Private Shared Sub RandomTest()
      2. Dim rand = Random.Shared
      3. Dim dbl_1 = rand.NextDouble()
      4. Dim dbl_2 = Enumerable.Range(0, 1000).
      5. Select(Function(x) rand.NextDouble()).ToArray()
      6. Dim dbl_3 = rand.GetItems(dbl_2, 100)
      7. rand.Shuffle(dbl_2)
      8. Dim sgn_1 = rand.NextSingle()
      9. Dim sgn_2 = Enumerable.Range(0, 1000).
      10. Select(Function(x) rand.NextSingle()).ToArray()
      11. Dim sgn_3 = rand.GetItems(sgn_2, 100)
      12. rand.Shuffle(sgn_2)
      13. Dim int8_1 = New Byte(999) {}
      14. rand.NextBytes(int8_1)
      15. Dim int8_2 = Enumerable.Range(0, 1000).
      16. Select(Function(x) Convert.ToByte(x And 255)).ToArray()
      17. Dim int8_3 = rand.GetItems(int8_2, 100)
      18. rand.Shuffle(int8_2)
      19. Dim int32_1 = rand.Next()
      20. Dim int32_2 = rand.Next(1500)
      21. Dim int32_3 = rand.Next(1500, 2500)
      22. Dim int32_4 = rand.Next(-1500, 2500)
      23. Dim int32_5 = Enumerable.Range(0, 1000).ToArray()
      24. rand.Shuffle(int32_5)
      25. Dim int64_1 = rand.NextInt64()
      26. Dim int64_2 = rand.NextInt64(1500)
      27. Dim int64_3 = rand.NextInt64(1500, 2500)
      28. Dim int64_4 = rand.NextInt64(-1500, 2500)
      29. Dim int64_5 = Enumerable.Range(0, 1000).
      30. Select(Function(x) Convert.ToInt64(x)).ToArray()
      31. rand.Shuffle(int64_5)
      32. Dim alphastr = AlphaLowerUpperNumeric
      33. Dim chars_1 = rand.GetItems(Of Char)(alphastr, 100)
      34. Dim string_1 = String.Join("", chars_1)
      35. Dim chars_2 = rand.GetItems(Of Char)(alphastr, alphastr.Length)
      36. Dim string_2 = String.Join("", chars_2)
      37. Dim chars_3 = alphastr.ToCharArray()
      38. rand.Shuffle(chars_3)
      39. Dim string_3 = String.Join("", chars_3)
      40. End Sub
      Dateien

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „exc-jdbi“ ()