91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C#中隨機數生成技巧有哪些

c#
小樊
85
2024-08-29 05:00:38
欄目: 編程語言

在C#中,生成隨機數的常用方法是使用System.Random

  1. 使用單個隨機數生成器:為了避免在短時間內創建多個隨機數生成器實例(可能導致重復的隨機數),可以使用一個靜態的隨機數生成器。
public static class RandomHelper
{
    private static readonly Random _random = new Random();

    public static int GetRandomNumber(int min, int max)
    {
        return _random.Next(min, max);
    }
}
  1. 使用System.Security.Cryptography.RNGCryptoServiceProvider生成密碼學安全的隨機數:當需要生成加密安全的隨機數時,可以使用RNGCryptoServiceProvider類。
using System.Security.Cryptography;

public static class CryptoRandomHelper
{
    public static int GetCryptoRandomNumber(int min, int max)
    {
        using var rng = new RNGCryptoServiceProvider();
        var randomNumber = new byte[4];
        rng.GetBytes(randomNumber);
        int fullRange = max - min;
        int result = BitConverter.ToInt32(randomNumber, 0) % fullRange + min;
        return result;
    }
}
  1. 生成正態分布的隨機數:可以使用Random.NextGaussian擴展方法生成正態分布的隨機數。
public static class GaussianRandomHelper
{
    public static double NextGaussian(this Random random, double mean, double stdDev)
    {
        double u1 = random.NextDouble();
        double u2 = random.NextDouble();
        double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2);
        return mean + stdDev * randStdNormal;
    }
}
  1. 生成不重復的隨機數序列:如果需要生成一個不包含重復元素的隨機數序列,可以使用Fisher-Yates算法對一個有序的整數序列進行隨機排序。
public static class UniqueRandomNumbersHelper
{
    public static IEnumerable<int> GetUniqueRandomNumbers(int count, int min, int max)
    {
        if (count > max - min + 1)
            throw new ArgumentOutOfRangeException(nameof(count), "Count is too large.");

        var numbers = Enumerable.Range(min, max - min + 1).ToList();
        var random = new Random();

        for (int i = numbers.Count - 1; i >= 0; i--)
        {
            int j = random.Next(i + 1);
            yield return numbers[j];
            numbers[j] = numbers[i];
        }
    }
}

這些技巧可以幫助你在C#中更高效地生成隨機數。

0
收藏| 龙江县| 文化| 凤山县| 大宁县| 福建省| 临沭县| 林口县| 平顺县| 尖扎县| 富宁县| 潍坊市| 临汾市| 通海县| 邢台县| 庆阳市| 花莲县| 绥芬河市| 德州市| 黄龙县| 西乌| 银川市| 永康市| 南京市| 建昌县| 广宗县| 和硕县| 三原县| 龙海市| 政和县| 城口县| 西吉县| 资兴市| 安福县| 南投市| 望城县| 忻州市| 永靖县| 盐城市| 盐源县| 沾化县|