利用随机生成器[1,5]生成随机数[1,7]

利用随机生成器rand5()可以生成随机数[1,5].

 

(1,5)的随机数,可以产生(0,1)的随机数;

7看成二进制111,用(0,1)产生的随机数分别对每位取值,如果取得的是000的话,舍去重新再取,得到的结果就是(1,7)之间的随机数.

 

 

//generate zero or one randly

int rand2()

{

     int result = rand5();

     while(result == 5)

     {

            result = rand5();
     }

     return result % 2;
}

 

int rand7()

{

       int high, mid, low;

       high = rand2();

       mid = rand2();

       low = rand2();

       while(high == 0 && mid == 0 && low == 0)

      {

             high = rand2();

             mid = rand2();

             low = rand2();
      }

      return  low + mid*2 + high *4;

}

 

 

 

附带一个interesting网站

http://fayaa.com/tiku/view/164/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值