zoukankan      html  css  js  c++  java
  • 转盘指定概率抽奖

    前段时间项目中开了一个转盘抽奖的活动,转盘抽奖是一个比较简单的算法,下面介绍两种实现

    第一种实现

    import random
    from typing import List
    
    def random_pick(item_list: List[str], probability_list: List[float]) -> str
        """
        以设定的概率从列表里随机抽取一个值返回
        :param item_list: 元素列表
        :param probability_list: 概率列表
        :return: 抽取的元素
        """
        if not all([item_list, probability_list]):
            # 如果传入空列表,返回提示信息
            return "元素列表和概率列表不能为空!"
        x = random.uniform(0, 1)        # 产生随机数
        accumulative_probability = 0.0  # 累积概率
        for item, probability in zip(item_list, probability_list):
            accumulative_probability += probability
            if x < accumulative_probability:
                break
        return item
    
    

    ### 第二种实现 ```python import random

    def random_pick():
    lucky_spin_rewards = [
    {"integral": 1, "probability": 20},
    {"integral": 2, "probability": 10},
    {"integral": 3, "probability": 60},
    {"integral": 4, "probability": 10},
    ]
    integral = 0
    x = random.randint(1, 100)
    for item in lucky_spin_rewards:
    probability = item["probability"]
    if x <= probability:
    integral = item["integral"]
    break
    x -= probability

    return integral
    
    
    以上两种实现其实原理一样,只是顺序不一样而已
  • 相关阅读:
    软工实践个人总结
    第05组 每周小结 (3/3)
    第05组 每周小结 (2/3)
    第05组 每周小结 (1/3)
    第05组 Beta冲刺 总结
    第05组 Beta冲刺 (5/5)
    第05组 Beta冲刺 (4/5)
    第六次作业
    第05组 Beta冲刺 (3/5)
    第05组 Beta冲刺 (2/5)
  • 原文地址:https://www.cnblogs.com/zzliu/p/12327471.html
Copyright © 2011-2022 走看看