给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数

定理: 给定生成随机1~n的随机函数,利用公式: n* (  f(n)   - 1 ) + f ( n)    生成的 1 ~ n * n 的 随机数是均匀的;

5 * ( rand5()  -1 ) + rand5()  获得的是 1 - 25 之间的随机数,去掉21之后的数,就是1~21 之间均匀随机的数,

再/3就是1~7之间的数

 

生成随机7的函数如下:

 

int rand7()

{

     for ( ; ; )

     { 

         int iRand  = 5 * (  rand5() - 1 ) + rand5();

         if ( iRand > 21 )

         {

              continue;

         }

         return iRand / 3;

     }

}

 

生成随机2的函数如下

int rand2()

{

 for ( ; ; )

{

     int iRand = rand5();

     if ( iRand == 3 )

    {

         continue;

     }

     else if ( iRand < 3 )

     {

         return 1;

     } 

     else

     {

           return 2; 

     }

}

 

 

你可能感兴趣的:(给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数)