现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

C/C++怎样生成确定范围的随机数(如[-1,1])

2013-07-13 19:40 工业·编程 ⁄ 共 741字 ⁄ 字号 暂无评论

1、生成[-1,1]的随机数

float GetRand() 

    return 2 .0 * rand() / RAND_MAX - 1.0; 

    注意那个2.0不能写成2了,那样的话,你就真……

2、生成low到up(low < up)之间的随机正整数

unsigned int GetRandomInteger(int low, int up) 

   unsigned int uiResult; 
 
   if (low > up) 
   { 
      int temp = low; 
      low = up; 
      up = temp; 
   } 
 
   uiResult = (rand() % (up - low + 1)) + low; 
 
   return uiResult; 

    这里不用多说,很简单。

3、生成low到up之间的随机实数

float GetRandomReal(float low, float up) 

   float fResult; 
    
   if (low > up) 
   { 
      int temp = low; 
      low = up; 
      up = temp; 
   } 
    
   fResult = low + (up - low) * rand() / (RAND_MAX + 1); 
    
   return fResult; 

    这里我举个例子予以说明,假设我们欲取得[-50, 100]之间的随机数,即low=-50,up=100。语句
(up - low) * rand() / (RAND_MAX + 1) 
是不是获得的正式0到150之间的随机数,再加上-50不是就获得-50到100之间的随机数了吗!其实这里取不到边界值,要取边界值很简单,RAND_MAX不加1即可。
    当然上边说的"随机数"只是在我们要求简单的情况下可取,这个你懂的!

给我留言

留言无头像?