微信群红包算法

今天是春节的最后一天上班,没什么事情,正好群里面的同学再讨论群红包的算法。

特写了个算法。大致思路是找发过的红包,寻找它的随机震动坡度。

下面来看看算法吧:

#coding=gbk
import random
import sys

#print random.randint(0, 99)

#print "====", random.uniform(0, 0.99)

def calRandomValue(min, max, total, num):
	print min, max, total, num
	total = float(total)
	num = int(num)
	min = 0.01
	if(num < 1):
		return
	if num == 1:
		print "第%d个人拿到红包数为:%.2f" %(num, total)
		return

	i = 1
	total_money = total

	#rtotal = (total*100 - min*num*100)/100
	while( i < num ):
		max = total_money - min*(num- i)
		k = int((num-i)/2)
		if num -i <= 2:
			k = num -i
		max = max/k
		monney = random.randint(int(min*100), int(max*100))
		monney = float(monney)/100
		total_money = total_money - monney

		print "第%d个人拿到红包数为:%.2f, 余额为: %.2f" %(i, monney, total_money)
		i += 1

	print "第%d个人拿到红包数为:%.2f, 余额为: %.2f" %(i, total_money, 0.0)

if __name__ == "__main__":
	min = sys.argv[1]
	max = sys.argv[2]
	total = sys.argv[3]
	num = sys.argv[4]
	calRandomValue(min, max, total, num)

执行:

python 2.py 0.01 10 20 30

0.01 10 20 30

第1个人拿到红包数为:0.42, 余额为: 19.58

第2个人拿到红包数为:0.12, 余额为: 19.46

第3个人拿到红包数为:0.24, 余额为: 19.22

第4个人拿到红包数为:1.10, 余额为: 18.12

第5个人拿到红包数为:1.45, 余额为: 16.67

第6个人拿到红包数为:0.21, 余额为: 16.46

第7个人拿到红包数为:0.34, 余额为: 16.12

第8个人拿到红包数为:0.16, 余额为: 15.96

第9个人拿到红包数为:1.38, 余额为: 14.58

第10个人拿到红包数为:0.86, 余额为: 13.72

第11个人拿到红包数为:1.18, 余额为: 12.54

第12个人拿到红包数为:0.93, 余额为: 11.61

第13个人拿到红包数为:0.70, 余额为: 10.91

第14个人拿到红包数为:0.60, 余额为: 10.31

第15个人拿到红包数为:0.03, 余额为: 10.28

第16个人拿到红包数为:0.61, 余额为: 9.67

第17个人拿到红包数为:1.37, 余额为: 8.30

第18个人拿到红包数为:0.67, 余额为: 7.63

第19个人拿到红包数为:0.28, 余额为: 7.35

第20个人拿到红包数为:0.96, 余额为: 6.39

第21个人拿到红包数为:1.30, 余额为: 5.09

第22个人拿到红包数为:1.08, 余额为: 4.01

第23个人拿到红包数为:1.12, 余额为: 2.89

第24个人拿到红包数为:0.75, 余额为: 2.14

第25个人拿到红包数为:0.64, 余额为: 1.50

第26个人拿到红包数为:0.37, 余额为: 1.13

第27个人拿到红包数为:0.01, 余额为: 1.12

第28个人拿到红包数为:0.26, 余额为: 0.86

第29个人拿到红包数为:0.31, 余额为: 0.55

第30个人拿到红包数为:0.55, 余额为: 0.00

python 2.py 0.01 10 20 2

0.01 10 20 2

第1个人拿到红包数为:1.62, 余额为: 18.38

第2个人拿到红包数为:18.38, 余额为: 0.00

python 2.py 0.01 10 20 3

0.01 10 20 3

第1个人拿到红包数为:4.58, 余额为: 15.42

第2个人拿到红包数为:11.22, 余额为: 4.20

第3个人拿到红包数为:4.20, 余额为: 0.00

时间: 2024-10-09 09:05:36

微信群红包算法的相关文章

关于微信手气红包算法的探讨

关于微信手气红包算法的探讨 前言 这大过年的,长辈家人朋友发的红包抢到手软,嘿嘿嘿.昨晚,和一个朋友出去浪,刚好两人现在就读专业相同,不知不觉间就谈到了微信红包的算法.今天闲来无事,就简单的做了一下记录. 第一种 这个是最简单的实现,就是先给每个红包分配0.01(确保大家都有),然后各个红包轮流产生一个随机数(不得大于当前总金额)并从总金额中取出相应的数,最后一个红包不管如何,全盘接收总金额. 贴 java 代码: ```java /** * 最简单的分配方法,单位全部统一为 分 * @para

微信人人红包扫雷APP软件定制开发

信达红包扫雷APP定制开发咨询找[陈生:147薇4322电0658],信达红包扫雷APP原生开发.各类红包扫雷系统以及软件系统开发皆可定制. 互联网让中国人的集体智商得到大大提高.一个人可以很笨蛋,换了一屋子人整天说.吆喝,最后形成一些共同的共识,这个共识的水平怎么样,就是这个屋子里的人的集体智商的体现. 五包多雷(200以上禁0,即发包200以上不能设置0为雷) 2中2陪5.1倍       3中18倍     4中4陪31     5中5陪52 解释:发包时设置的雷必须完全出现了才可以获陪,

微信红包算法

微信红包有多种玩法,其中一种就是指定金额.人数(m),拆红包的人收到的金额是随机,收到的金额保留两位小数,至少有一分,所有人的红包加起来等于指定金额. 我想到一种做法就是:将指定金额放大100倍,也就是变成单位"分",这时金额就是整数了,设为n,从1到n这个整数区间随机抽取m(是人数)个整数,这样1到n的整数区间就分成了m或m+1(这种情况,最后的两个区间合成一个区间)个区间. 比如输入金额1.00元,人数m=3,n=100 * 1.从1到100之间随机选中的三个整数为15.42.88

微信红包算法TEST

1.基本算法 设定总金额为10元,有N个人随机领取:N=1 则红包金额=X元: N=2 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数 第二个红包=10-第一个红包金额: N=3 红包1=0.01至0.98之间的某个随机数 红包2=0.01至(10-红包1-0.01)的某个随机数 红包3=10-红包1-红包2 -- 2.java代码 1 package Demo_1.Test_1; 2 3 import java.math.BigDecimal; 4 impor

微信QQ红包埋雷控制尾数避雷软件

 如果你没用软件 那你一定是输微信咨询 fys620418 下面小编详细介绍一下这个软件.什么,这位朋友问这款全自动QQ抢红包埋雷扫软件-APP解码,到底有什么玩法,听小编详细说,绝对让您玩得高兴痛快.微信红包控制尾数,固定数字,固定金额,红包控三公玩法,制尾数.固定数字,固定金额,适合玩单双,欢乐十分,尾数玩法?QQ红包控制尾数,各种各样的接龙玩法,牛牛玩法,大小单双玩法,快乐十分玩法,暗宝玩法,各行玩法等等.还有七星彩玩法,控制尾数玩法.当然了,全自动QQ抢红包埋雷扫软件-APP解码,它的功

浅谈群红包的实现

前言: 红包是支付的方式, 也是社交的延伸.群红包在这两块领域串联得很好, 表现尤为的浓墨重彩. 承接上两篇技术浅谈: 1). 浅谈接龙红包的技术实现. 2). 浅谈微信红包摇一摇的技术实现. 这一次, 让我们谈谈群红包的技术实现. 一为是红包的分配算法, 二为竞抢的技术实现. 分配算法: 最初玩群红包的时候, 并没有意识到分配算法的难度. 下意识的觉得, 不就是个随机算法嘛? so easy! 后来在知乎上看到很多人在讨论, 才意识到该算法或许并不简单. 好的东西, 往往让人觉得简单, 而其背

把 14 亿中国人都拉到一个微信群在技术上能实现吗?

阅读本文大概需要 2.8 分钟. 作者:Max  来源:腾讯知乎官号 www.zhihu.com/question/293021546/answer/487157602 "最近,知乎上有一个非常热门的问题:"把 14 亿中国人民都拉到一个微信群里在技术上能实现吗?" 先说结论:也许可以实现,但你会什么都看不见. 根据 2017 年<微信数据报告>的公开数据 [参考 1] :2017 年 9 月,微信日均登陆 9.02 亿人,日均发送消息 380 亿次. 这意味着平

微信裂变红包

微信裂变红包是指微信用户在收到企业发送的组合红包之后, 可以再次将红包中的剩余金额分享给好友领取的一种现金红包形式. 一.功能介绍 春节期间,微信红包以其独特的魅力,优秀的用户体验和安全的支付环境,一经推出即受到了广大用户的热烈欢迎,现微信支付现金红包向微信支付商户开发,具体能力如下: 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖流程,带给用户微信支付原生的流畅

微信群投票你造吗?[微信投票彩蛋]

我们知道微信公众平台图文消息中可以插入投票,并且微信投票功能升级为可多渠道发布投票,投票组件页面与图文消息编辑页都可新建投票,并通过群发.自定义菜单.自动回复等多渠道发出.但是你造吗?微信群也可以投票!WeChatInsider独家首次向大家曝光了这个隐藏已久的微信彩蛋. 微信群投票并非通过“摇一摇”这类插件,或在群功能中直接实现.而是像最开始的微信红包一样,通过一个公众号实现,这个公众号就是:微信投票(ID:votecn). 关注成功后可通过“微信投票”创建投票: 投票主题不超过25个汉字(不