不重复的加权随机抽样数组项
创始人
2025-01-12 12:30:27
0

以下是一个示例的解决方法,使用Python语言实现:

import random

def weighted_random_sampling(arr, weights, k):
    # 创建一个字典,用于存储数组项及其权重
    weighted_items = {item: weight for item, weight in zip(arr, weights)}
    
    # 创建一个空列表,用于存储抽样结果
    sampled_items = []
    
    # 执行k次抽样
    for _ in range(k):
        # 计算所有数组项的权重总和
        total_weight = sum(weighted_items.values())
        
        # 随机生成一个权重值,范围为0到总权重值
        random_weight = random.uniform(0, total_weight)
        
        # 遍历数组项及其权重
        for item, weight in weighted_items.items():
            # 如果随机权重值小于当前项的权重值,则将该项加入抽样结果列表,并从字典中移除
            if random_weight < weight:
                sampled_items.append(item)
                del weighted_items[item]
                break
            # 如果随机权重值大于等于当前项的权重值,则减去当前项的权重值,继续遍历下一项
            random_weight -= weight
    
    return sampled_items

# 示例用法
arr = ['A', 'B', 'C', 'D', 'E']
weights = [0.1, 0.4, 0.2, 0.2, 0.1]
k = 3

sampled_items = weighted_random_sampling(arr, weights, k)
print(sampled_items)

以上代码中,weighted_random_sampling函数接受三个参数:数组arr、权重数组weights和抽样数量k。该函数使用字典weighted_items存储数组项及其权重,并根据权重进行加权随机抽样。抽样结果存储在列表sampled_items中,并返回该列表。

示例用法中,数组arr包含了五个项,对应的权重数组weights中包含了每个项的权重。k指定了要抽样的数量。输出结果将会是一个长度为k的列表,包含了从数组中加权随机抽样得到的项。

相关内容

热门资讯

出现新变化!福建大玩家辅助操作... 您好:福建大玩家辅助操作视频这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用...
第九分钟开挂!微信小程序微乐挖... 第九分钟开挂!微信小程序微乐挖坑辅助免费,花花生活圈可以开挂,教你教程-2026最新版本微信小程序微...
此事引发广泛关注!三哥玩摆头注... 此事引发广泛关注!三哥玩摆头注可以控制(辅助挂)其实是有挂(有挂法门)-哔哩哔哩 【无需打开直接搜索...
九分钟开挂!皮皮透视辅助软件工... 九分钟开挂!皮皮透视辅助软件工具,皇豪互众控制系统下载,分享教程-2026最新版本1、九分钟开挂!皮...
今天上午!蜀山四川辅助脚本(辅... 今天上午!蜀山四川辅助脚本(辅助挂)一直真的有挂(有挂方案)-哔哩哔哩;亲,蜀山四川辅助脚本这款游戏...
四分钟开挂!闲逸同花插件,欢聚... 四分钟开挂!闲逸同花插件,欢聚水鱼辅助视频,必备教程-2026最新版本1、欢聚水鱼辅助视频透视辅助简...
为切实保障!牌乐门安全黑科技是... 为切实保障!牌乐门安全黑科技是真的吗(辅助挂)其实真的是有挂(有挂方针)-哔哩哔哩您好:牌乐门安全黑...
五分钟开挂!约局吧辅助器下载,... 五分钟开挂!约局吧辅助器下载,兴动互娱辅助工具,介绍教程-2026最新版本1、该软件可以轻松地帮助玩...
据了解!今日长牌破解(辅助挂)... 据了解!今日长牌破解(辅助挂)原来是有挂的(有挂机巧)-哔哩哔哩 了解更多开挂安装加(1367043...
3分钟开挂!广西老友玩友破解视... 3分钟开挂!广西老友玩友破解视频,玄龙辅助工具,教你教程-2026最新版本1)广西老友玩友破解视频辅...