C# 打乱 List<Float> 并建立索引映射关系
{
"title": "C# 打乱 ListSystem.Collections.Generic命名空间,然后可以使用以下代码实现:\n\ncsharp\nusing System;\nusing System.Collections.Generic;\n\nclass Program\n{\n    static void Main(string[] args)\n    {\n        List<float> originalList = new List<float>() { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f };\n\n        // 打乱顺序\n        List<float> shuffledList = ShuffleList(originalList);\n\n        // 创建索引映射关系\n        Dictionary<int, int> originalToShuffledIndex = CreateIndexMapping(originalList, shuffledList);\n        Dictionary<int, int> shuffledToOriginalIndex = CreateIndexMapping(shuffledList, originalList);\n\n        // 打印映射关系\n        Console.WriteLine("原始索引 -> 打乱后索引:");\n        foreach (var kvp in originalToShuffledIndex)\n        {\n            Console.WriteLine($"{kvp.Key} -> {kvp.Value}");\n        }\n\n        Console.WriteLine("打乱后索引 -> 原始索引:");\n        foreach (var kvp in shuffledToOriginalIndex)\n        {\n            Console.WriteLine($"{kvp.Key} -> {kvp.Value}");\n        }\n    }\n\n    static List<float> ShuffleList(List<float> list)\n    {\n        Random random = new Random();\n        int n = list.Count;\n        while (n > 1)\n        {\n            n--;\n            int k = random.Next(n + 1);\n            float value = list[k];\n            list[k] = list[n];\n            list[n] = value;\n        }\n        return list;\n    }\n\n    static Dictionary<int, int> CreateIndexMapping(List<float> originalList, List<float> shuffledList)\n    {\n        Dictionary<int, int> indexMapping = new Dictionary<int, int>();\n        for (int i = 0; i < originalList.Count; i++)\n        {\n            indexMapping.Add(i, shuffledList.IndexOf(originalList[i]));\n        }\n        return indexMapping;\n    }\n}\n\n\n此代码首先定义了一个长度为6的原始ListShuffleList方法打乱了顺序,生成了打乱后的ListCreateIndexMapping方法,分别创建了原始索引到打乱后索引的映射和打乱后索引到原始索引的映射。\n\n最后,程序将打印出这两个映射关系。你可以根据索引映射关系来定位到原始索引或打乱后索引。\n
原文地址: https://www.cveoy.top/t/topic/pzRu 著作权归作者所有。请勿转载和采集!