分享

有rand7得到rand10

 sky_feiyang 2014-07-09
定义rand7生成1-7
(rand7()-1)*7={0,7,14,21,28,35,42}
rand7={1,2,3,4,5,6,7}
两者相加生成1-49的随机数,每个概率为1/49
现在要生成1-10,只需生成等概率的1-10*N,然后%10即可
如下程序表示只取1-40之间的数
 
  1. int rand10()  
  2. {  
  3.     int a71, a72, a10;  
  4.       
  5.     do   
  6.     {  
  7.         a71 = rand7() - 1;  
  8.         a72 = rand7();  
  9.         a10 = a71 *7 + a72;  
  10.     } while (a10 >= 40);  
  11.       
  12.     return (a10) %4 + 1;  
  13. }   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多