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
    
    
    以上两种实现其实原理一样,只是顺序不一样而已
  • 相关阅读:
    RabbitMQ安装
    windows下安装Erlang
    利用StopWatch类监控Java代码执行时间并分析性能
    HttpClinet工具类
    Javap与JVM指令
    idea全局护眼色绿豆沙
    删除注册在Eureka的服务(无效,多余)
    Steam之两个list间交集、并集、差集
    微服务与SpringCloud简介
    VS code 豆沙绿护眼主题
  • 原文地址:https://www.cnblogs.com/zzliu/p/12327471.html
Copyright © 2011-2022 走看看