首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从C#中的加权列表中选择x个随机元素(无需替换)

好的,我了解了您的问题。从 C# 中的加权列表中选择 x 个随机元素,我们可以使用以下代码来实现:

代码语言:csharp
复制
Random random = new Random();
List<int> weights = new List<int>() { 1, 2, 3, 4, 5 };
int numberOfElements = 10;
int x = random.Next(numberOfElements);
int chosenElement = weights[x - 1];

上述代码中,我们先创建了一个 Random 对象,然后创建了一个包含 5 个元素的加权列表。接下来,我们使用 random.Next() 方法来生成一个 1 到 5 之间的随机整数,该整数表示我们要选择的元素在加权列表中的位置。最后,我们将该元素返回并将其添加到我们的最终结果列表中。

以下是一个完整的代码示例,用于从 C# 中的加权列表中选择 x 个随机元素:

代码语言:csharp
复制
using System;
using System.Collections.Generic;
using System.Linq;

class RandomWeightedList
{
    public static void Main()
    {
        Random random = new Random();
        List<int> weights = new List<int>() { 1, 2, 3, 4, 5 };
        int numberOfElements = 10;
        int x = random.Next(numberOfElements);
        int chosenElement = weights[x - 1];

        List<int> result = new List<int>();
        for (int i = 0; i < numberOfElements; i++)
        {
            int randomIndex = random.Next(weights.Count);
            int element = weights[randomIndex];
            result.Add(element);
            weights.RemoveAt(randomIndex);
        }

        Console.WriteLine("Chosen element: " + chosenElement);
        Console.WriteLine("Randomly chosen elements: " + string.Join(", ", result));
    }
}

上述代码中,我们使用了一个 List 来存储选中的元素,以及一个 List 来存储每个随机元素对应的权重。在生成随机数之后,我们遍历加权列表,将每个随机元素添加到结果列表中,并删除已经添加到结果列表中的元素,以避免重复添加。最后,我们将选中的元素和随机元素列表一起输出到控制台。

希望这个代码示例能够帮助您实现您的需求。如果您有任何其他问题或需要更多帮助,请随时告诉我。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券