大家在抢红包,程序员在研究红包算法
微信红包在春节的火爆程度不言而喻,广告主投入5亿现金红包,与央视羊年春晚独家合作起到了巨大的推动作用。这就像一针大补丸,在短时间内给微信带来了极大的关
除夕全天微信用户红包总发送量达到10.1亿次,摇一摇互动量达到110亿次,红包峰值发送量为8.1亿次/分钟。
抛开微信红包的市场价值不谈,红包本身的算法也引发了热议,由于官方没有给出明确的说法,各家也是众说纷纭,小编下面也为大家带来几种分析。
首先看看数据分析帝
大多数人都做出自己的猜测,这也是在不知道内部随机算法的时候的唯一选择,但是大多数人没有给出自己亲自的调查结果。这里给出一份100样本的调查抽样样本数据,并提出自己的猜测。
1. 钱包钱数满足截尾正态随机数分布。大致为在截尾正态分布中取随机数,并用其求和数除以总价值,获得修正因子,再用修正因子乘上所有的随机数,得到红包价值。
这种分布意味着:低于平均值的红包多,但是离平均值不远;高于平均值的红包少,但是远大于平均值的红包偏多。
图1. 钱包价值与其频率分布直方图及其正态拟合
但看分布直方图并不能推出它符合正态分布,但是考虑到程序的简洁性和随机数的合理性,这是最合乎情理的一种猜测。
越是后面的钱包,价值普遍更高
图2. 钱包序列数与其价值关系曲线
从图2中的线性拟合红线可以看到,钱包价值的总体变化趋势是在慢慢增大,其变化范围大约是一个绿色虚线上下界划出的“通道”。(曲线可以被围在这么一个正合乎常规的“通道”中,也从侧面反映了规律1的合理性,说明了并不是均匀分布的随机数)
从另一个平均数的图中也可以看出这一规律。
图3. 平均数随序列数的变化曲线
在样本中,1000价值的钱包被分成100份,均值为10。然而在图3中我们可以看到在最后一个钱包之前,平均数一直低于10,这就说明了一开始的钱包价值偏低,一直被后期的钱包价值拉着往上走,后期的钱包价值更高。
3. 当然平均数的图还可以透露出另一个规律,那就是最后的那一个人往往容易走运抽得比较多。因为最后那一个人是钱包剩下多少就拿多少的,而之前所有人的平均数 都低于10,所以至少保证了最后一个人会高于平均值。在本样本中,98号钱包抽到35,而最后一份钱包抽到46。
综上,根据样本猜测:
1. 抽到的钱大多数时候跟别人一样少,但一旦一多,就容易多很多。
2. 越是抽后面的钱包,钱越容易多。
3. 最后一个人往往容易撞大运。
点评:这种明显很实际有差异,小编每次不管什么时候抢都是几毛钱。
第二位同学写了一个简单python 代码
据观察,红包分钱满足以下几点:
1.不会有人拿不到钱
2.不会提前分完
3.钱的波动范围很大
红包在一开始创建的时候,分配方案就订好了。抢红包的时候,,不过是挨个pop up而已。
因此 python 代码如下:
def weixin_divide_hongbao(money, n): divide_table = [random.randint(1, 10000) for x in xrange(0, n)] sum_ = sum(divide_table) return [x*money/sum_ for x in divide_table]
不过上述算法还有两个小问题:
1.浮点数精度问题
2.边界值的处理
第三位同学按照网上流传的python写了一个java的版本
int j=1; while(j
第四位同学的这种算法看起来非常科学。
他认为:
1、每个人都要能够领取到红包;
2、每个人领取到的红包金额总和=总金额;
3、每个人领取到的红包金额不等,但也不能差的太离谱,不然就没趣味;
4、算法一定要简单,不然对不起腾讯这个招牌;
正式编码之前,先搭建一个递进的模型来分析规律
设定总金额为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
……
int j=1; while(j
输入一看,波动太大,这数据太无趣了!
第1个红包:7.48 元,余额:2.52 元
第2个红包:1.9 元,余额:0.62 元
第3个红包:0.49 元,余额:0.13 元
第4个红包:0.04 元,余额:0.09 元
第5个红包:0.03 元,余额:0.06 元
第6个红包:0.03 元,余额:0.03 元
第7个红包:0.01 元,余额:0.02 元
第8个红包:0.02 元,余额:0 元
改良一下,将平均值作为随机安全上限来控制波动差

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Berapakah jumlah maksimum sampul merah WeChat yang boleh dihantar? Terdapat had atas jumlah sampul merah yang dihantar dalam WeChat, dan sesetengah pengguna tidak jelas tentang jumlah maksimum sampul merah yang boleh dihantar pada WeChat. Jumlah maksimum pada tarikh bukan istimewa ialah 200. Seterusnya ialah pengenalan kepada jumlah maksimum sampul merah yang dibawa oleh editor kepada pengguna yang berminat boleh datang dan melihat! Tutorial penggunaan WeChat Bagaimana untuk menetapkan imej latar belakang status WeChat Jawapan: 200 yuan Butiran: 1. Had atas jumlah sampul merah WeChat: 200. Setiap orang hanya boleh menghantar maksimum 200 yuan dalam sampul merah WeChat setiap kali. 2. Jumlah sampul merah istimewa: Pada 20 Mei setiap tahun, pengguna boleh menghantar sampul merah dengan had atas 520 yuan.

Sampul merah WeChat semasa tidak menyokong pemulangan manual. Model tutorial yang berkenaan: Sistem iPhone13: Versi iOS15.5: Analisis WeChat 8.0.19 1 Sampul merah WeChat semasa tidak menyokong pemulangan manual Untuk sampul merah WeChat yang belum dituntut, sistem WeChat akan mengembalikannya secara automatik akaun asal selepas 24 jam, jadi apabila kita ingin memulangkan sampul merah selepas menerimanya, selagi kita tidak menerimanya, ia akan dipulangkan secara automatik selepas 24 jam. Tambahan: Bagaimana untuk mengembalikan pemindahan WeChat 1 Klik pada pemindahan yang perlu dikembalikan pada antara muka sembang WeChat. 2Dalam antara muka butiran pemindahan, klik pilihan bayaran balik. 3. Dalam tetingkap pop timbul baharu yang muncul, klik Return sekali lagi. Ringkasan/Nota: Sampul merah WeChat semasa tidak menyokong pemulangan manual Apabila kami menerima sampul merah, selagi kami tidak menerimanya, ia akan dikembalikan selepas 24 jam.

1. Cari applet WeChat: 2. Klik untuk mencari [Pusat Penerimaan Laporan Tencent]. 3. Klik pada pilihan penipuan Internet. 4. Masukkan maklumat dan tangkapan skrin yang berkaitan. Arahan sampul merah WeChat: 1. Jika sampul merah WeChat tidak diambil dalam masa 24 jam, ia akan dikembalikan terus. 2. Sampul merah WeChat dikumpulkan oleh orang lain dan tidak boleh dipulangkan oleh anda;

WeChat ialah aplikasi mudah alih yang menyepadukan rangkaian sosial, pembayaran, membeli-belah dan fungsi lain, dan amat disayangi oleh pengguna. Antaranya, sampul merah WeChat, sebagai sebahagian daripada fungsi pembayaran, telah memenangi hati majoriti pengguna untuk kemudahan dan keseronokan mereka. Walau bagaimanapun, kadangkala kita mungkin menghadapi situasi di mana sampul merah yang salah dihantar. Walaupun kadangkala agak menyusahkan untuk memulangkan sampul merah WeChat, apabila menggunakan sampul merah WeChat, sila pastikan anda menyemak maklumat dengan teliti untuk memastikan setiap penghantaran adalah tepat. Bagaimana untuk memulangkan sampul merah WeChat? Cara mengendalikan pemulangan sampul merah WeChat Kaedah pemulangan sampul merah WeChat bergantung terutamanya pada sama ada sampul merah telah diterima. Jika sampul merah belum diterima, terdapat kaedah pengendalian berikut: Situasi 1: Jika pihak satu lagi belum menerima sampul merah, anda boleh terus berhubung dengan pihak yang satu lagi, maklumkan kepada mereka bahawa sampul merah yang salah telah dihantar, dan minta pihak lain tidak menerimanya. lebih daripada 24 jam

1. Muat turun Tencent Butler 2. Cari Tencent Mobile Butler: [Utiliti] - [Lagi]. 3. Kemudian klik [Red Envelope Alarm Clock]. 4. Apabila anda melihat pilihan untuk WeChat dan QQ, klik satu butang di bawah untuk membukanya. 5. Kemudian anda boleh melihat antara muka selepas dibuka, atau anda boleh mengklik butang tetapan di penjuru kanan sebelah atas untuk menetapkannya. 6. Anda boleh memilih peringatan bunyi atau peringatan getaran, dan anda boleh menetapkan semuanya.

1. Mula-mula, kami membuka WeChat dan klik pada kotak carian. 2. Cari WeChat Pay 3. Klik untuk masuk. 4. Kedua-dua pihak akan mendapat gesaan pembayaran balik sampul merah WeChat di sini.

WeChat, sebagai aplikasi sosial yang kaya dengan ciri, bukan sahaja menyediakan orang ramai dengan cara yang mudah untuk berkomunikasi, tetapi juga menambah keseronokan melalui fungsi sampul merahnya yang unik. Menetapkan bunyi pemberitahuan sampul merah WeChat akan membolehkan pengguna mengetahui dengan segera apabila menerima sampul merah, menambah jangkaan dan kejutan. Tetapan bunyi peringatan sampul merah WeChat menjadikan setiap kali anda menerima sampul merah penuh dengan jangkaan dan keseronokan. Kaedah tetapan bunyi pemberitahuan sampul merah WeChat bergantung terutamanya pada sistem telefon mudah alih anda dan versi WeChat. Mari kita lihat langkah persediaan untuk sistem Android dan Apple. Bagaimana untuk menetapkan bunyi pemberitahuan sampul merah WeChat? Kaedah 1 untuk menetapkan bunyi gesaan sampul merah WeChat Untuk sistem Android, 1. Buka aplikasi WeChat, klik pilihan [Saya] di bar navigasi bawah, masukkan halaman [Saya], dan kemudian klik [Settings]. 2. Pada halaman tetapan

Anda boleh menghantar sehingga 200 sampul merah di WeChat. Butiran: Jumlah keseluruhan sampul merah yang dihantar kepada setiap pengguna sehari tidak boleh melebihi 1,000 yuan. Walaupun terdapat beberapa batasan, sampul merah WeChat masih merupakan kaedah pembayaran yang sangat mudah dan popular. Sama ada semasa Tahun Baru Cina atau pada majlis-majlis khas lain, sampul merah WeChat membawa lebih keseronokan dan kejutan kepada orang ramai.
