如何產生指定範圍的隨機數
這兩個函式的使用都要包含標頭檔案stdio.h。
rand()
函式返回的是一個0到RAND_MAX
的隨機數,RAND_MAX
這是一個常數,它的值在windows和linux下是不同的。在我的機子上這個值是32767,也就是說,在我的機子上,rand()
這個函式會返回一個0到32767的隨機數。(這裡不討論返回的是不是真正意義上的隨機數的問題,只討論它的用法。)
產生某個區間的隨機數
如果我們需要這個函式產生某個區間的隨機數怎麼做呢?首先我們看看rand()
函式原型:int rand(void)
,可以看出這個函式不接受任何引數,那麼怎麼讓他產生某個區間的隨機呢?
通用的公式是這樣的:n+rand()%m
,這個公式的意思產生區間[n,n+m)
的隨機數,即包括n到不包括m之間的隨機數。由區間可以看出,式子中n
是區間的開始,m
你想要的區間的差。
這個通用公式也很容易理解,因為rand()
這個函式不接受任何引數,所以他本身始終表示0到RAND_MAX的隨機數,所以我們可以在它產生預設隨機數的基礎上加n,就是想要的區間的起始,在用m表示區間的結束。
需要注意的是,這樣的產生的隨機數預設是左閉右開的:[n,m)
srand函式
這個函式通常和rand()函式配合使用以達到最好的隨機數效果。它的原型是:void srand(unsigned int seed)
,為函式rand()
提供隨機數種子。這個函式要在rand()
呼叫之前呼叫,才能達到應有的效果。
舉例:
void rand_function(void)
{
char param_out[256]={0};
u8 data[256]={0};
float n=0;
u16 m=0;
m= After_filter[0] %100;;
srand(m);
n=rand()%10+5;
Coefficient=(float)(1/n);
// sprintf(param_out,":n=%f,adc0=%d\r\n",n,After_filter[0]);
// strcat((char*)data,param_out);
// USART1_SendData(data,100);
}
相關文章
- MATLAB中如何產生指定範圍的隨機數Matlab隨機
- java生成指定範圍的隨機數Java隨機
- Matlab產生特定範圍的隨機數矩陣Matlab隨機矩陣
- 在指定範圍內生成隨機數隨機
- MATLAB中如何生成指定範圍的隨機整數向量Matlab隨機
- 隨機範圍小數和隨機範圍整數隨機
- 如何在linux中用命令產生一個範圍內的隨機數?Linux隨機
- jquery簡單生成指定範圍隨機數效果jQuery隨機
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- C語言程式生成指定範圍的不重複的隨機數C語言隨機
- 生成某個範圍的隨機數隨機
- 【筆記】如何產生隨機數筆記隨機
- MySQL取得某一範圍隨機數MySql隨機
- R產生隨機數隨機
- redis如何獲取有序集合指定範圍的個數Redis
- vc中產生隨機數隨機
- c++產生隨機數C++隨機
- 生成總和固定 可變範圍的隨機數隨機
- 計算機隨機數的產生 (轉)計算機隨機
- Rust中如何產生隨機數或密碼?Rust隨機密碼
- 高效產生不重複的隨機數隨機
- 大規模資料儲存叢集資料存放的設計,分散式shardid的生成-如何指定範圍隨機數,分組隨機數分散式隨機
- 如何生成指定分佈的隨機數隨機
- js生成一定範圍內的隨機整數JS隨機
- js隨機產生區間數JS隨機
- matlab產生隨機數或隨機矩陣Matlab隨機矩陣
- C 語言產生隨機數的方法隨機
- C語言產生隨機數的方法C語言隨機
- SQL Server當中生成一定範圍的隨機數SQLServer隨機
- linux生產32位隨機數Linux隨機
- 如何使用excel 2007產生隨機數Excel隨機
- 高效產生一組不重複的隨機數隨機
- JavaScript產生隨機數例項程式碼JavaScript隨機
- 從oracle表中隨機取記錄,產生隨機數和隨機字串Oracle隨機字串
- java 生成一個隨機整數,範圍從 1 到 10Java隨機
- 產生0到100內的任意隨機數隨機
- ORACLE產生隨機數的多種方法分享 轉Oracle隨機
- matlab中的產生隨機數的rand函式Matlab隨機函式