歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

1、生成[-1,1]的隨機數 
  1. float GetRand() 
  2. { 
  3.     return 2 .0 * rand() / RAND_MAX - 1.0; 
  4. }

注意那個2.0不能寫成2了,那樣的話,你就真……

2、生成low到up(low < up)之間的隨機正整數

  1. unsigned int GetRandomInteger(int low, int up) 
  2. { 
  3.    unsigned int uiResult; 
  4.  
  5.    if (low > up) 
  6.    { 
  7.       int temp = low; 
  8.       low = up; 
  9.       up = temp; 
  10.    } 
  11.  
  12.    uiResult = (rand() % (up - low + 1)) + low; 
  13.  
  14.    return uiResult; 
  15. } 

這裡不用多說,很簡單。

3、生成low到up之間的隨機實數

  1. float GetRandomReal(float low, float up) 
  2. { 
  3.    float fResult; 
  4.      
  5.    if (low > up) 
  6.    { 
  7.       int temp = low; 
  8.       low = up; 
  9.       up = temp; 
  10.    } 
  11.      
  12.    fResult = low + (up - low) * rand() / (RAND_MAX + 1); 
  13.      
  14.    return fResult; 
  15. } 

這裡我舉個例子予以說明,假設我們欲取得[-50, 100]之間的隨機數,即low=-50,up=100。語句

(up - low) * rand() / (RAND_MAX + 1) 

是不是獲得的正式0到150之間的隨機數,再加上-50不是就獲得-50到100之間的隨機數了嗎!其實這裡取不到邊界值,要取邊界值很簡單,RAND_MAX不加1即可。

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

Copyright © Linux教程網 All Rights Reserved