Viyi.Util/Collections/ListExtensions.cs

(完整代码) 1KB

namespace Viyi.Util.Collections;

public static class ListExtensions {
    /// <summary>
    /// 对列表内容进行洗牌
    /// </summary>
    /// <remarks>
    /// 注意:该扩展直接对列表元素进行洗牌,不会产生新的列表对象。
    /// </remarks>
    public static List<T> Shuffle<T>(this List<T> source) {
        var random = ViyiRandom.Create();
        for (int i = source.Count - 1; i > 0; i--) {
            var rIndex = random.Next(i + 1);
            (source[i], source[rIndex]) = (source[rIndex], source[i]);
        }
        return source;
    }

    /// <summary>
    /// 对数组内容进行洗牌
    /// </summary>
    /// <remarks>
    /// 注意:该扩展直接对数组元素进行洗牌,不会产生新的数组对象。
    /// </remarks>
    public static T[] Shuffle<T>(this T[] source) {
        var random = ViyiRandom.Create();
        for (int i = source.Length - 1; i > 0; i--) {
            var rIndex = random.Next(i + 1);
            (source[i], source[rIndex]) = (source[rIndex], source[i]);
        }
        return source;
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。