You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Random Event Image Script 按设定概率随机生成图片的实现技巧及示例咨询

按概率生成指定图片的实现方案

核心实现思路

  • 先把所有图片和对应的概率做绑定,生成权重映射表
  • 计算所有概率的总和(如果是百分比配置的话总和一般为100,该逻辑也支持非标准化的权重配置,不需要提前做百分比转换)
  • 生成一个0到总权重之间的随机数
  • 遍历权重映射表做累加,随机数落在哪个图片对应的区间就返回对应的图片

注意:如果后续要新增图片、调整概率,只需要修改权重映射表即可,不需要调整核心逻辑

开发技巧

  • 概率配置建议单独抽成独立配置项,不要硬编码在逻辑中,后续调整概率不需要改动核心功能代码
  • 如果有几十张以上的图片需要分配概率,可以提前预计算累加区间数组,单次匹配的时间复杂度可以降到O(log n),比普通遍历效率高很多
  • 功能开发完成后可以写个循环跑10万次以上的测试,统计每个图片的出现频率,验证实际概率是否符合预期配置

Python 代码示例

import random
from collections import defaultdict

def get_image_by_prob(prob_map: dict):
    # 计算总权重
    total_weight = sum(prob_map.values())
    # 生成0到总权重的随机浮点数
    rand_num = random.uniform(0, total_weight)
    current_sum = 0
    for img_path, weight in prob_map.items():
        current_sum += weight
        if rand_num <= current_sum:
            return img_path

if __name__ == "__main__":
    # 配置图片和对应概率,直接填百分比数值即可
    image_prob_config = {
        "1_image.png": 5,
        "image_2.png": 95
    }
    # 单次调用获取图片
    selected_img = get_image_by_prob(image_prob_config)
    print(f"本次选中的图片是: {selected_img}")

    # 测试概率准确性 跑10万次统计结果
    test_count = 100000
    count_result = defaultdict(int)
    for _ in range(test_count):
        img = get_image_by_prob(image_prob_config)
        count_result[img] += 1
    print("\n10万次测试的统计结果:")
    for img, cnt in count_result.items():
        print(f"{img}: 出现次数{cnt}, 实际占比{cnt/test_count*100:.2f}%")

运行说明

直接运行脚本即可看到效果,10万次测试后1_image.png的占比基本稳定在4.9%5.1%区间,`image_2.png`的占比稳定在94.9%95.1%区间,和预期的概率配置一致。

内容的提问来源于stack exchange,提问作者sawyer1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:15:00