1. 程式人生 > >C/C++怎樣生成確定範圍的隨機數(如[-1,1])

C/C++怎樣生成確定範圍的隨機數(如[-1,1])

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即可。

    當然上邊說的"隨機數"只是在我們要求簡單的情況下可取,這個你懂的!