Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C/C++怎样生成确定范围的随机数(如[-1,1])

1、生成[-1,1]的随机数 
  1. float GetRand() 
  2.     return 2 .0 * rand() / RAND_MAX - 1.0; 
  3. }
注意那个2.0不能写成2了,那样的话,你就真……2、生成low到up(low < up)之间的随机正整数
  1. unsigned int GetRandomInteger(int low, int up) 
  2.    unsigned int uiResult; 
  3.  
  4.    if (low > up) 
  5.    { 
  6.       int temp = low; 
  7.       low = up; 
  8.       up = temp; 
  9.    } 
  10.  
  11.    uiResult = (rand() % (up - low + 1)) + low; 
  12.  
  13.    return uiResult; 
这里不用多说,很简单。3、生成low到up之间的随机实数
  1. float GetRandomReal(float low, float up) 
  2.    float fResult; 
  3.      
  4.    if (low > up) 
  5.    { 
  6.       int temp = low; 
  7.       low = up; 
  8.       up = temp; 
  9.    } 
  10.      
  11.    fResult = low + (up - low) * rand() / (RAND_MAX + 1); 
  12.      
  13.    return fResult; 
这里我举个例子予以说明,假设我们欲取得[-50, 100]之间的随机数,即low=-50,up=100。语句(up - low) * rand() / (RAND_MAX + 1)  是不是获得的正式0到150之间的随机数,再加上-50不是就获得-50到100之间的随机数了吗!其实这里取不到边界值,要取边界值很简单,RAND_MAX不加1即可。当然上边说的"随机数"只是在我们要求简单的情况下可取,这个你懂的!