C#封裝類對數組進行隨機排序

pdkie 9年前發布 | 824 次閱讀 C#

這個一個擴充C#隨機數發生器的類,可以隨機生成指定范圍的數字,可以隨機對數組進行排序,非常好用

using System;

namespace DotNet.Utilities { /// <summary> /// 使用Random類生成偽隨機數 /// </summary> public class RandomHelper { //隨機數對象 private Random _random;

    #region 構造函數
    /// <summary>
    /// 構造函數
    /// </summary>
    public RandomHelper()
    {
        //為隨機數對象賦值
        this._random = new Random();
    }
    #endregion

    #region 生成一個指定范圍的隨機整數
    /// <summary>
    /// 生成一個指定范圍的隨機整數,該隨機數范圍包括最小值,但不包括最大值
    /// </summary>
    /// <param name="minNum">最小值</param>
    /// <param name="maxNum">最大值</param>
    public int GetRandomInt(int minNum, int maxNum)
    {
        return this._random.Next(minNum, maxNum);
    }
    #endregion

    #region 生成一個0.0到1.0的隨機小數
    /// <summary>
    /// 生成一個0.0到1.0的隨機小數
    /// </summary>
    public double GetRandomDouble()
    {
        return this._random.NextDouble();
    }
    #endregion

    #region 對一個數組進行隨機排序
    /// <summary>
    /// 對一個數組進行隨機排序
    /// </summary>
    /// <typeparam name="T">數組的類型</typeparam>
    /// <param name="arr">需要隨機排序的數組</param>
    public void GetRandomArray<T>(T[] arr)
    {
        //對數組進行隨機排序的算法:隨機選擇兩個位置,將兩個位置上的值交換

        //交換的次數,這里使用數組的長度作為交換次數
        int count = arr.Length;

        //開始交換
        for (int i = 0; i < count; i++)
        {
            //生成兩個隨機數位置
            int randomNum1 = GetRandomInt(0, arr.Length);
            int randomNum2 = GetRandomInt(0, arr.Length);

            //定義臨時變量
            T temp;

            //交換兩個隨機數位置的值
            temp = arr[randomNum1];
            arr[randomNum1] = arr[randomNum2];
            arr[randomNum2] = temp;
        }
    }
    #endregion
}

}</pre>

 本文由用戶 pdkie 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!