首页
学习
活动
专区
工具
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 来存储每个随机元素对应的权重。在生成随机数之后,我们遍历加权列表,将每个随机元素添加到结果列表中,并删除已经添加到结果列表中的元素,以避免重复添加。最后,我们将选中的元素和随机元素列表一起输出到控制台。

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

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

相关·内容

C#堆栈和队列

此前已经采用 Array类和ArrayList类来把数据像列表一样组织在一起. 尽管这两种数据结构可以方便的把数据组织起来进行处理, 但是它们都没有为设计和实现实际问题的解决方案提供真正的抽象。 堆栈(stack)和队列(queue)是两种面向列表(list-oriented)的数据结构, 它们都提供了易于理解的抽象. 堆栈中的数据只能在表的某一端进行添加和删除操作, 反之队列中的数据则在表的一端进行添加操作而在表的另一端进行删除操作. 堆栈被广泛用于从表达式计算到处理方法调用的任何编程语言的实现中. 而队列则用在区分优先次序的操作系统处理以及模拟现实世界的事件方面, 比如银行出纳柜台的队列, 以及建筑物内电梯的操作。 C#为使用这些数据结构提供了两种类:Stack 类和Queue类. 本章将会讨论如何使用这些类并且介绍一些实用的例子。

03
领券