python实现发红包redenv_python实现红包裂变算法

本文介绍了如何使用Python实现红包裂变算法,包括定义money_val函数获取随机金额,money_random函数进行红包分配,并确保每个人至少获得指定最小金额。在主函数中展示了不同参数的测试用例,以及库Decimal的使用,确保浮点数运算的精确性。此算法适用于红包的随机分配场景。
摘要由CSDN通过智能技术生成

# -*- coding: utf-8 -*-

from decimal import Decimal, InvalidOperation

import random

def money_val(min, max):

return min if min > max else Decimal(str(random.randint(min, max)))

def money_random(total, num, min=0.01):

"""

:param total=10; # 红包总额 10 元

:param num=8; # 分成 8 个红包,支持 8 人随机领取

:param min=0.01; # 每个人最少能收到 0.01 元

"""

money_list = []

try:

total = Decimal(str(total))

except InvalidOperation as e:

return money_list, e.message

try:

if isinstance(num, float) and int(num) != num:

raise ValueError(u'Invalid value for Num: \'{0}\''.format(num))

num = Decimal(str(int(num)))

except ValueError as e:

return money_list, e.message

try:

min = Decimal(str(min))

exc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值