加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

随机送玫瑰花把妹法

(2010-01-29 00:00:00)
标签:

薛定谔

玫瑰

把妹

随机数

分类: 萎科学

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://dineal.blogbus.com/logs/57318752.html

看了一个新闻,光棍们“把妹”也分方法?科学做基础马到功成‎。

里面介绍的是薛定谔把妹法及一些延伸。

 

去年在看TBBT的时候,写过一篇日记,叫薛定谔的猫与股市开盘。

薛定谔的猫存在着不确定性的因素,随机数也同样是存在着不确定性,它本生就是随机生成的。

薛定谔把妹法送的是早餐,MM能不能吃上早餐,取决于那枚硬币的正反面。

鉴于不让MM饿肚子,俺又研究出来一个随机数送菊花,每次送的菊花的数量都是随机不同的,同样她也就无从得知菊花的数量的含义。

你还是那个迷一样的男子。

恩, 天蝎座的人就是这么神秘。

随机数的生成方法有很多,下面的方法-线性同余算法,便是其中使用起来最普遍的一种,但对于非工科男的Dineal根本看不懂这些,只能换用其它方法了。

现在用得最广泛的伪随机数产生算法就是所谓的线性同余算法。其随机数序列 {Xn}由方程:Xn+1 = ( aXn + c ) mod m得到,其中m>0称为模数,0≤ a <m称为乘数,0≤c <m称为增量,0≤X0<m称为初始值或种子,当m、a、c、X0都是整数时,通过这个方程就能产生一系列[0,m)范围内的整数了。很明 显,对一个线性同余随机产生算法来说,最重要的是m、a、c的选择。我们希望产生的序列足够长,能包含[0,m)内所有的数,并且产生的数是随机的,最好 能用32bit算术高效实现。于是乎为了有足够的空间产生足够长的队列,我们会使m足够大;为了使序列足够完整,足够象随机序列,我们会发现当m是素 数,c为0时就可以使序列的周期(即序列不重复的长度)对于一定的a达到m-1;要能用32bit算术高效实现,我们的m当然不能超过32bit,幸好刚 好有一个满足上述条件的很方便的素数2^31-1给我们用,于是产生函数就变成了Xn+1 = ( aXn) mod ( 2^31 – 1 )。在超过20亿个a的可选取值中,只有很少的几个可以满足上述所有条件,其中之一就是a = 7^5 = 16807。于是我们可以实现如下(完整的代码code栏目中提供打包下载,下同):

    unsigned myrand()

    {

        return (seed = (seed * 10807L) & 0x7fffffffL);

--------------------------------------------------------------------------------

 

http://photo2.bababian.com/upload3/20100129/7C24BC78847F90E0588BBEC94362AAEB.jpg

 

IGoogle里面有一个小工具。测试反应速度的。精确到小数点后三位,这个数值基本上每次都不会一致,随机的数字也就产生了。
要是愿意送300+也可以,当然你的反应速度可能比我快,也可能是100+,甚至直接就是两位数的。或是把后两位数字组合一下,组合的方法也有很多,加减乘除,乘方。
菊花的颜色也可以随机,黄的,黑的,蓝的,紫的,红的,白的,粉的,绿的。慢慢随机去吧。

 

0

阅读 收藏 喜欢 打印举报/Report
后一篇:搬来搬去
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有