快速生成百万奖券-随机数生成算法的探讨

快速生成百万奖券-随机数生成算法的探讨

ID:9293489

大小:21.46 KB

页数:9页

时间:2018-04-26

快速生成百万奖券-随机数生成算法的探讨_第1页
快速生成百万奖券-随机数生成算法的探讨_第2页
快速生成百万奖券-随机数生成算法的探讨_第3页
快速生成百万奖券-随机数生成算法的探讨_第4页
快速生成百万奖券-随机数生成算法的探讨_第5页
资源描述:

《快速生成百万奖券-随机数生成算法的探讨》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、快速生成百万奖券-随机数生成算法的探讨转载注明:http://www.obisoft.com.cn/zh-CN/TanZone/Details/86·2016-01-07·Mablo·技术专栏·1·36随机数生成算法,或许你觉得在实际应用中没什么好研究的。各个语言都已经高度封装了。随手一个Math.Random()就来一大把一大把的随机数。但……这样生成的随机数对于我好像并不能投入使用。实际问题是这样的:前几天写了一个微信抽奖插件,红牛公司使用了这个插件,开始大规模生成抽奖券。我的系统有一个关键模块,就是生成大量随机数,作为

2、抽奖券号。用户凭抽奖券号来领奖。唔,听上去挺简单的。我也是这么以为的。。。抽多少个奖,就调多少次Math.Random()呗~~然后随机发给用户,特定的抽奖券可以中奖,验证一下完事。做个管理端,做个用户界面,搞定~我花了大概一下午时间做完了这个系统。如果你感兴趣这个系统是怎么工作的,可以在这里访问它,它现在还在工作中:http://prizesystem.obisoft.com.cn/然后就有然后了。.。。因为我生成了10个抽奖券,它们是这样子的:743974397439743974397439743974397439743

3、97439这不是坑爹么!怪想法一这个抽奖券,必须保证一点,就是都不一样,不允许出现一模一样的两个抽奖券。(不然我抽完奖以后意外发现我还可以再抽一次!)基本上是个程序员都会笑话我。Math.Random()方法是以当前时间做种子来生成随机数的。那么,这样纸:for 100 times{    Numbers.Add(random.NextInt());}在循环里生成随机数,自然是一个很快的过程,快到时间都“没变”。怪想法二于是新手的想法就是:在这里减慢时间流逝,故意拖慢程序。。。(简直作死,这是错误示例)瞬间产生两个问题:1.

4、拖慢多久?我要拖慢程序的时间如果也是随机数的话,也是用时间做种子的呀2.程序太慢怪想法三于是新手又来了一个想法。据说新声明一个变量的地址还是比较随机的,,,那么我就用新变量的地址吧(简直作死,这是错误示例)for 100 times{    int tempi;    Numbers.Add((int)&tempi/10000);}我特么真的还整出来了快速的随机数。。而且果然挺随机的呵呵。。笑笑就算了。不说这个法好不好,光对内存栈的影响就够作死了。。。而且没人告诉我这个数是随机的。。怪想法四于是我想了另一个路子……随机生成一

5、个非常非常长的巨大的随机的数,然后需要索要随机数的时候,就从这个巨大的随机的东西里面拽出来一截瞬间产生两个问题:1.巨大的随机数有多大2.太尼玛占内存了。3.每次索取完随机数,如果把巨大随机数前面去掉一截速度绝对爆卡。如果再用一个变量标记取到哪里了又太复杂果然我不得不承认,上帝是不会转骰子的。怪想法五唔,据说计算机里的随机数都是伪的,高中好像还学过什么随机数表。。果断去网上下了一个随机数表。刚搜完就后悔了。1.你怎么存这个表2.软件多次运行怎么办3.表要弄多大的怪想法六自己设计随机算法吧。我对一个Math.Random()求

6、了一个Hash,然后取最后几位,再塞进去用作种子。然后把新随机数的Hash再塞进去。问题:这好像并不随机。。。如果我的随机数只有4位,那么过一小会儿就死循环了。怪想法七如果一直从随机的角度想可能突破不了了。不妨从另一个角度想想,生成的随机数中不能有完全相同的两个随机数。好像这个也不难实现。如果要生成比较随机的数,就生成一个随机数,然后去数据库里查找他,看他是不是已经存在了,如果已经存在,就舍弃它,继续生成下一个那么,,每生成一个随机数,就要遍历一整遍数据库。这不是坑爹么!怪想法八如果不能去遍历数据库,我不妨和怪想法四结合了一

7、下,生成一个巨大的随机数,要用的时候从里面拽一截,然后遍历这个巨大的随机数,把和这一截一模一样的东西全去掉好像很美好,有两个问题每生产一个随机数,就要遍历一遍巨大的随机数。这不是坑爹么巨大的随机数不够用的时候会自动补充。补充的内容很可能含有以前出现过的值。坑爹啊怪想法九有哥们告诉我试试分组。只比较前两位,,如果不一样就跳过,一样就继续,如果还慢,试试对前两位分组,先按组查找,然后再在组里查找神马神马沙拉拉巴扎嘿。。我还在上课时间非常激动的设计了一套逆天的算法。。。回来一运行。。这不是坑爹么。。数据库快复杂死了。。调试了半天,

8、最后速度还不如原来呢。。。坑爹坑爹先这样吧我真没想到我居然会被随机数的问题难倒。。既然如此,我就先用怪想法四和怪想法七结合了一下,凑凑合合把活交工了。验收的时候,我生成了200个随机数,果然没有一个重复的。(我知道再多来点就不知道成啥样了)这个破活只给了我1500块钱。。。我也懒得研究啥厉

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。