linux應用程式設計筆記(5)linux中獲取隨機數

2021-10-24 12:04:20 字數 911 閱讀 6722

隨機數:隨機數是隨機出現,沒有任何規律的一組數列。

偽隨機數:真正的完全隨機的數列是不存在的,只是一種理想情況。我們平時要用到隨機數時一般只能通過一些演算法得到乙個偽隨機數序列。

我們平時說到隨機數,基本都指的是偽隨機數。

連續多次呼叫rand函式可以返回乙個偽隨機數序列

srand函式用來設定rand獲取的偽隨機序列的種子

單純使用rand重複呼叫n次,就會得到乙個0-rand_max之間的偽隨機數,如果需要調整範圍,可以得到隨機數序列後再進行計算。

單純使用rand來得到偽隨機數序列有缺陷,每次執行程式得到的偽隨機序列是同乙個序列,沒法得到其他序列。

原因:因為rand內部的演算法其實是通過乙個種子(seed,其實就是乙個原始引數,int型別),rand內部預設是使用1作為seed的,種子一定的演算法也是一定的,那麼每次得到的偽隨機序列肯定是同乙個。

所以要想每次執行這個程式獲取的偽隨機序列不同,則每次都要給不同的種子。用srand函式來設定種子。

總結和說明

linux系統收集系統中的一些隨機發生的事件的時間(譬如有人動滑鼠,譬如觸控螢幕的操作和座標等)作為隨機種子去生成隨機數序列。

//使用rand和srand函式獲取隨機數

#include

#include

int main (

int argc,

char

*ar**)

//atio()將字元轉化為int型別

srand

(atoi

(ar**[1]

)); ret =

rand()

;printf

("rand = %d\n"

, ret)

;return0;

}

Linux串列埠應用程式設計

常見的資料通訊的基本方式可分為並行通訊與序列通訊兩種。1.並行通訊是指利用多條資料傳輸線將乙個字資料的各位元位同時傳送。它的特點是傳輸速度快,適用於傳輸距離短且傳輸速度較高的通訊。2.序列通訊是指利用一條傳輸線將資料以位元位為單位順序傳送。特點是通訊 線路簡單,利用簡單的線纜就可實現通訊,降低成本,...

Linux應用程式設計 mmap

二話不說,上來就問下那個man name mmap,munmap map or unmap files or devices into memory synopsis include void mmap void addr,size t length,int prot,int flags,int f...

IAP 應用程式設計

1 檢查是否需要對第二部分 進行更新 2 如果不需要更新則轉到4 3 執行更新操作 4 跳轉到第二部分 執行 第一部分 必須通過其它手段,如jtag或isp燒入 第二部分 可以使用第一部分 iap功能燒入,也可以和第一部分 一道燒入,以後需要程式更新是再通過第一部分iap 更新。對於stm32來說,...