日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

获取系统信息2——linux中使用随机数

發(fā)布時間:2023/12/20 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取系统信息2——linux中使用随机数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講堂》課程的學(xué)習(xí)整理,如有侵權(quán),請告知刪除。


1、隨機數(shù)和偽隨機數(shù)

  • 隨機數(shù)是隨機出現(xiàn),沒有任何規(guī)律的一組數(shù)列。
  • 真正的完全隨機的數(shù)列是不存在的,只是一種理想情況。
  • 一般只能通過一些算法得到一個偽隨機數(shù)序列。
  • 平時說到隨機數(shù),基本都指的是偽隨機數(shù)。

2、linux中隨機數(shù)相關(guān)API

  • 連續(xù)多次調(diào)用rand函數(shù)可以返回一個偽隨機數(shù)序列;
  • srand函數(shù)用來設(shè)置rand獲取的偽隨機序列的種子。

3、實戰(zhàn)演示

#include <stdio.h> #include <stdlib.h>int main(int argc, char **argv) {int i = 0, val = 0;/* if (argc != 2){printf("usage: %s num\n", argv[0]);return -1;} */ printf("RAND_MAX = %d.\n", RAND_MAX); // 2147483647//srand(atoi(argv[1]));srand(time(NULL));for (i=0; i<6; i++){val = rand();printf("%d ", (val % 6));}printf("\n");return 0; }

  • 單純使用rand重復(fù)調(diào)用n次,就會得到一個0-RAND_MAX之間的偽隨機數(shù),如果需要調(diào)整范圍,可以得到隨機數(shù)序列后再進行計算。
  • 單純使用rand來得到偽隨機數(shù)序列有缺陷,每次執(zhí)行程序得到的偽隨機序列是同一個序列,沒法得到其他序列;
  • rand內(nèi)部的算法是通過一個種子(seed,其實就是一個原始參數(shù),int類型),rand內(nèi)部默認(rèn)是使用1作為seed的,種子一定的算法也是一定的,那么每次得到的偽隨機序列肯定是同一個。
  • 要想每次執(zhí)行這個程序獲取的偽隨機序列不同,則每次都要給不同的種子。用srand函數(shù)來設(shè)置種子。

4、總結(jié)和說明

  • 在每次執(zhí)行程序時,先用srand設(shè)置一個不同的種子,然后再多次調(diào)用rand獲取一個偽隨機序列,這樣就可以每次都得到一個不同的偽隨機序列。
  • 一般常規(guī)做法是用time函數(shù)的返回值來做srand的參數(shù)。

5、在linux系統(tǒng)中獲取真正的隨機數(shù)

  • linux系統(tǒng)收集系統(tǒng)中的一些隨機發(fā)生的事件的時間(譬如有人動鼠標(biāo),譬如觸摸屏的操作和坐標(biāo)等)作為隨機種子去生成隨機數(shù)序列。


總結(jié)

以上是生活随笔為你收集整理的获取系统信息2——linux中使用随机数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。