C# 集合乱序(极精简,复制即用)

自己写的,目前我在CSDN没有找到比这个更简单的写法,而且时间复杂度也是比较低,而且随机性比较强。代码简短,复制即用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public List<T> RandomList<T>(List<T> inList) {

        List<T> newList = new List<T>();
        int count = inList.Count;
        for (int i = 0; i < count; i++)
        {
            int temp = UnityEngine.Random.Range(0, inList.Count - 1);
            T tempT = inList[temp];
            newList.Add(tempT);
            inList.Remove(tempT);
        }
        //将最后一个元素再随机插入
       T tempT2 = newList[newList.Count - 1];
        newList.RemoveAt(newList.Count - 1);
        newList.Insert(UnityEngine.Random.Range(0,newList.Count), tempT2);
        inList = newList;
        return inList;
    }

使用方法

public void Test() {
        List<int> testList = new List<int>();
        testList.Add(2);
        testList.Add(4);
        testList.Add(6);
        testList.Add(8);
        testList.Add(10);
        testList.Add(12);

        testList = RandomList(testList);
        //这个时候集合已经随机了
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值