random.randint是随机的嘛?从最近搞的两次活动说起
hive-105017·@oflyhigh·
0.000 HBDrandom.randint是随机的嘛?从最近搞的两次活动说起
最近在中文社区搞了两次活动,分别是晒年夜饭得点赞红包,以及迎财神得随机点赞红包,谢天谢地活动都圆满完成,没有出什么大的纰漏。

(图源 :[pixabay](https://pixabay.com/photos/dice-game-monochrome-roll-the-dice-1502706/))
不过小插曲还是有一些的,比如晒年夜饭的规则一开始就没制订完善,比如说是晒一张图还是多张图啊?之前已经发帖子晒过的还可不可以参加活动啊?参加活动的图片之后还可不可以用于发帖啊?参加活动是否同时要写些文字内容啊?
还有就是虽然以为弄程序会是小菜一碟,但是因为好久没磕程序,手生得厉害,搞了一个大半天+一个大上午,测试了无数次后,才让程序能够正常工作。
当然,所谓的正常工作是打了折扣的,比如我希望回复中加上@xxx(作者ID)作为开头,但无论如何也没能解决格式错乱的问题(我觉得不是我代码而是hive.blog的问题),最后只好把这个特色去掉,嗯,这样也好,省得骚扰别人。
到了大年初五迎财神这个活动呢,我想整出点花样,增加趣味性,让点赞金额在2HBD - 6HBD随机产生,这样就有了一些“抽奖”的感觉,我自己都觉得会很好玩,忍不住参与了一下。
结果这一个趣味性,让这个活动有了一些小翻车的感觉,我期待的奖金金额是平均分配的,按三十八九个用户参加活动的话,那么每个奖项的金额都应该是8个的样子。
结果开一个2HBD,开一个又是2 HBD,如果不是代码是我自己的写的,程序是我自己运行的,全程没加入任何人为因素,***我都会怀疑有黑幕,严正抗议!***
最终开奖结果如下:
奖项|人数|祝福语|寓意
----|----|----|----
6 HBD |5人| 六六大顺|寓意一切顺利,事事如意
5 HBD |9人|五福临门|表示五种福气降临家门,幸福满满。
4 HBD| 2人|四季平安|祝愿一年四季都平安顺遂。
3 HBD |9人|三羊开泰|寓意吉祥如意,万事顺利。
2 HBD |14人|二龙腾飞|象征事业蒸蒸日上,飞黄腾达
嗯,加上祝福语和寓意看起来就好多了,这样每个奖项都不错。
不过我还是纳闷,为啥开出这么多2 HBD呢,其实我是希望多开一些6HBD,或者哪怕多开一些三四五也好看一些啊?这让我甚至有些怀疑Python`random.randint(2, 6)`的随机性了。
为此我特意写了一段程序来验证random.randint的随机性
```
import random
from pprint import pprint
dict= {'a':0, 'b':0, 'c':0, 'd':0, 'e':0}
list = list(dict.keys())
pprint(dict)
for i in range(0, 50000):
index = random.randint(0, 4)
dict[list[index]]+=1
pprint(dict)
```
上述代码大意是执行50000次`random.randint`操作,然后看看选取出来的值分布范围
随便执行几次程序,结果差不多都是类似下边这样。


可见当样本足够多的时候,随机性还是没问题的。当我们把函数执行次数改成50,结果就类似这样了


可见差异还是非常大的,是随机性失灵了吗?我仔细想了一下,这才是随机性的正确表现呢。就好比我们扔硬币,每轮扔两次,如果每次都是一字一背,或者一背一字,那么能说这样才算随机吗?随机不等同于均匀分布。
那是不是程序就没有改进的余地呢?也不是,比如我可以用程序生成一组数字,8个2,8个3,8个4,8个5,8个6,然后每次抽奖从中随机选取一个,被选出的数从列表中移除,直到抽奖完成,所有的数字被选出。不过这样,又增加了实现的复杂性,你知道,我是非常懒的,
另一种折中方法就是把最低奖项调高,比如从3起或者从4起,然后加入4.5 5.5这样的奖项,这样大奖小奖差异不太大,得小奖的心里落差没那么悬殊,估计会好很多。不过这两天暂时不计划搞活动了,数数数得老眼昏花,歇歇,歇歇啦。
讲真,最后几个小伙伴都点出2 HBD时,我都绝望了,想砸电脑,好在最后一个参与的小伙伴小影,抽了6 HBD的大包,为这次活动画上了一个完美的句号,不愧是和财神握过手的女人啊。
对了,还有个事,小影参加活动时已经是半夜了,我那时还没去数有多少小伙伴参加活动,点赞之后一统计,发现人数已经39了啦,但凡小影再晚上一会,我把截至线发出去,她的回复就没法参加活动了,所以她还真是幸运呢。
说起来由于这次活动我也很好奇自己会抽到多少,所以也参加了一下,抽到了5HBD (五福临门签)还不错。按说吧,这类抽奖活动工作人员都不参与,既然我抢占了一个名额,再多放个名额也算合理,嗯,就是这样,简直不要太完美!

(图源 :[pixabay](https://pixabay.com/photos/thank-you-feedback-letters-5077738/))
最后再次感谢小伙伴们的热情参与,再次感谢神秘大佬的鼎力支持。👍 beco132, silversaver888, teamvn, smartvote, alpha-omega, harkar, icon123456, deanliu, votehero, ethanlee, netaterra, hungryharish, cnfund, bilpcoinbot, fee-service-new, eturnerx, fatman, justinashby, liangfengyouren, cst90, steemindian, therealyme, im-ridd, netaterra.leo, drricksanchez, rammargarita, warmstill, btshuang, joeyarnoldvn, mygod, bpcvoter3, oldman28, hungryanu, clifth, cur8, lnakuma, pero82, meppij, bungongjaro, janaveda, curly-q, eddyss, joele, axel-blaze, monzo, dine77, wolf-dawg, catwomanteresa, jamzmie, dallas27, mermaidvampire, soufianechakrouf, natural.alfa, stoodkev, cedricguillas, julian2013, stoodmonsters, mimi.ruby, kimzwarch, liumei, digital.mine, travoved, quiltedduckfarm, tresor, itchyfeetdonica, archisteem, aequi, fredaig, blackalas, ifhy, picazzy005, bnk, ffcrossculture, travelgirl, cnstm, vickyli, adm, ioioioioi, voxmortis, pet.society, rj-photo, jywahaha, nana-hive, armentor, radard, hoffmeister84, nabbas0786, andyjim, magicmonk, mobbs, nanosesame, geekgirl, spaminator, lestrange, minigame, moleah, ambarvegas, steemcleaners, travelcontest, logic, minloulou, dailyke20, korver, roberto58, investegg, eturnerx-dbuzz, voter000, msp-makeaminnow, japanguide, hmayak, likuang007, lianjingmedia, htliao, voter001, theindiankid, yahya.umer.hayat, menny.trx, crowdwitness, jimhawkins, accelerator, minminlou, tomiscurious, newhope, evahe, belemo, solominer, bengy, a-bot, bigmoneyman, fourfourfun, tikatarot, laruche, joshman, freedomring, trayan, whangster79, recoveryinc, samrisso, tomtothetom, walterjay, felt.buzz, zonguin, aidefr, robotics101, hivequebec, dying, nopasaran72, pappyelblanco, movement19, hive-195880, lovelemon, lpv, chenlocus, ericaliu, lrscarmen, zerofive, mounteverest2021, amelia166539, leomolina, dbddv01, dses, yjcps, emma155573, hivefella, acantoni, francosteemvotes, gtpjfoodbank, dbfoodbank, weddinggift, hyborian-strain, yestermorrow, harper1551118, tvb, idx, abit, laoyao, midnightoil, xiaohui, helene, exec, eval, elizabeth1511241, evelyn151372, mary1441524, fusion.lover, omnivori, noblegateway, evergreen.min, nova1351451, eleanor1241276, starrouge, penguinpablo, cryptonized, hive.friends, ella1151490, funnyman, hungrybear, jacuzzi, isabella1151376, eric.gundam, lifeisajourney, paisley10937, roozeec, swati18, dapeng, megha16sept, curamax, suhunter, health1983, scarlett1051028, hivewatchers, rivalhw, seikatsumkt, philipmak, aartithorat, fredo77200, teachblogger, maheshtaru1990, aafeng, jayant1990, philiprenelee, dbfbfutures, imcore, faithpersists, davidke20, good-karma, esteemapp, esteem.app, ecency, ecency.stats, ecency.waves, namchau, yumisee, joeliew, vamos-amigo, bichen, steemegg, sorin.cristescu, ahmadmangazap, awesomegames007, eolianpariah2, esmeesmith, mrpointp, nathen007, cxy, pocketrocket, lovequeen, ghua, gbd, sasaadrian, bxt, chinchilla, atyh, love5200, mallory84, maroy, littlebee4, xiaoshuang, bai123, trina77, mrspointm, abundancelife, paulmp, ssebasv, adyiron, xiaoyaodidi, santigs, jychbetter, darknightlive, softworld, prospero25, trafalgar, kaykunoichi, raindrop, traf, kgsupport, lyamalfonzo23, artefactoestudio, kggymlife, hive-108278, kattycrochet, blaqbarbie, atongis, carolin77, reidenling90, diochen, el-dee-are-es, wittywheat, wiseagent, marygong77777, chaofanjun, rushi1983, ying82, ace108, crypto.max, nurul-uli, uruiamme, emmali, cowboyzlegend27, olaunlimited, ailgoy, rubelynmacion, sunnywu, susanli3769, passion-fruit, fortune-master, floatinglin, jmshu, ahlawat, sunflor, nrg, ubg, photographercr, evildeathcore, gigel2, farm1, ssekulji, mama21, franzpaulie, tzae, polaleye50, barineka, lisfabian, breelikeatree, joanm897, daveks, artonmysleeve, paydice, imisstheoldkanye, burnhive, vancouverpics, tillmea, iamleicester, azazqwe, rosatravels, agmoore2, daryh, angelina6688, ibbtammy, annepink, victory622, votebetting, rufruf, tingjie, daudmuhammad2022, victoradebiyiart, kelvvyn, bpcvoter4, bpcvoter1, endhivewatchers, bpcvoter2,