VimIy微民网,让世界倾听微民的声音! 设为首页 | 加入收藏 | 网站地图
当前位置: 主页 > 明升m88备用 > 正文

C++父亲遂机数的效实

整理时间:2018-09-21 08:44 热度:°C

  C++的遂机数最父亲值是RAND_MAX,在头文件中定义。

  在windows平台下的VS是0x7fff,在MacBook的XCode是int的最父亲值。看到来不一的平台是不一的。

  条是windows的是在太他妈小了。

  先上壹个往日的遂机函数:

  想优募化壹下:想着两个相迨,最父亲值是1亿,同时邑是遂机,就应当是均等的。

  于是我运转了100万次,生成10里边的遂机数,统计壹下出产即兴的次数。

  结实:

  

  左边的是父亲遂机数的次数,左边的是原到来的。

  却以看出产,左边的比较正日,根本上是平分的。

  而左边的,清楚隔壹个就父亲壹点。等于1的特佩高。到于怎么产生的我也想不畅通。

  不外面却以设想壹下,增添以范畴。就遂机1和2。

  1和2的概比值邑是0.5,两个数相迨是4.我们却以违反掉落1-4范畴的遂机数。

  条是概比值清楚不是均等的。假设实行两次,1和2邑出产即兴

  就却以及到1:1次,2:2次,3:0次,4:1次。

  清楚,相迨的壹定是拥有差异的.

  到来,又把小时分妈妈叫我的迨法口诀看壹遍。

  结实:

  那应当怎么搞呢,实则应当用移位的方法。你算出产到来的数是10进制的话,每回向左移触动1为,坚硬是迨以10,比如我下面的代码,

  10000以下和10000以上完整顿不相干,两次遂机不相干。条要此雕刻么才干使正确的遂机。

  实则坚硬是寻求模的时分,花样好多,第壹次遂机将迨以好多。rand1迨以的是rand2的模。

  佰度了壹下其人家的遂机数。

  还拥有此雕刻个骈杂点的:

  实则邑是经度过移位的方法,移出产阿谁遂机数的最父亲值就行。

  不外面拥有个效实要考虑的,坚硬是跨平台效实。不一平台的整顿形的长度能不一,RAND_MAX也能不一。尽是移位,能会出产即兴数组越界。

  因此为了装置然宗见还是用我写的两个10000最父亲值的遂机数吧。


TAG:
关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系我们
{dede:global.cfg_webname/} Power by DedeCms