1、C語言生成僞隨機數
在C語言中,爲了生成隨機數,可以使用如下兩個函數:
- void srand(unsigned int seed);
- int rand(void);
srand()和rand()配合使用產生僞隨機數序列。
srand()函數用來生成一個種子,rand()函數可以用來產生僞隨機數(不是真正意義上的隨機數)。
原理是根據一個數,我們可以稱它爲種子,爲基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數,但事實上這並不是真正的隨機數。
代碼:
注意:以下代碼在使用srand()函數使用時,一定!要!放!在!循!環!外!,因爲time的時間精度很低,如果放在循環內部等於每次使用同一個種子產生隨機序列,所以會出現產生的隨機數總是相同的情況,即隨機數生成失敗。
//注意包含以下頭文件
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//生成1-100以內隨機數
int main(void)
{
int i;
int randomData = 0;
srand((unsigned)time(NULL));//注意該函數一定要放在循環外,原因見代碼最前面【注意】。
while(1)
{
randomData = rand()%100+1;
printf("%d\n", randomData);
}
}
2、STM32 or STM8使用AD採集生成隨機數
在STM32或STM8中,爲了使用AD採集獲取隨機數,步驟如下:
- 1、初始化ADC
- 2、使用ADC獲取採樣值
- 3、根據需要對數據進行處理,從而獲取需要範圍內的隨機數序列
代碼:
//初始化AD等詳見 STM32 or STM8 ADC章節
rand = ADC1_GetVOL_HEX_InstantaneousValue()%5 + 2;//2-6之間隨機數