如何產生指定範圍的隨機數
這兩個函式的使用都要包含標頭檔案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隨機
- 隨機範圍小數和隨機範圍整數隨機
- C語言程式生成指定範圍的不重複的隨機數C語言隨機
- 生成某個範圍的隨機數隨機
- 【筆記】如何產生隨機數筆記隨機
- R產生隨機數隨機
- 如何生成指定分佈的隨機數隨機
- js生成一定範圍內的隨機整數JS隨機
- c++產生隨機數C++隨機
- Rust中如何產生隨機數或密碼?Rust隨機密碼
- SQL Server當中生成一定範圍的隨機數SQLServer隨機
- 匹配指定範圍整數正規表示式
- matlab 從某個範圍內隨機取出一個整數Matlab隨機
- java 生成一個隨機整數,範圍從 1 到 10Java隨機
- 關於如何產生隨機數的幾種方法彙總!(2018.07.08)隨機
- matlab中的產生隨機數的rand函式Matlab隨機函式
- Matlab產生隨機數函式小結Matlab隨機函式
- 生成指定區間的隨機小數隨機
- pbootcms文章或者產品設定範圍隨機增加訪客閱讀量boot隨機
- 短視訊軟體開發,驗證碼的隨機數如何產生隨機
- 6-1 使用函式輸出指定範圍內Fibonacci數的個數函式
- C語言——使用函式輸出指定範圍內的Fibonacci數C語言函式
- Python產生20個隨機整數的方法詳解!Python隨機
- Random 專案總結 -11 產生隨機數字random隨機
- Math類產生隨機數後保留一位小數隨機
- 防範債務危機:2022困境資產如何解困突圍
- 6-3 使用函式輸出指定範圍內的完數 (20分)函式
- div拖動範圍限定在指定元素內
- CSS 設定指定範圍li元素樣式CSS
- podfile 指定第三方庫版本範圍
- Python如何隨機生成1到100的隨機數?Python隨機
- 基礎 變數的作用範圍變數
- CB認證產品範圍
- UA MATH567 高維統計II 隨機向量1 隨機向量的範數H5隨機
- 使用 Carbon 獲取指定時間範圍內的日期陣列陣列
- HMS Core地理圍欄能力助你實現指定範圍人群的精準訊息推送
- PFMEA如何定義範圍?