Linux date 和 隨機數

2021-08-09 21:10:54 字數 2026 閱讀 3133

本節回顧下 date 和隨機數的情況吧,前輩們寫的都比較好,在此主要對以下幾篇博文做簡化與總結,方便以後適合自己回顧

重參博文:

1 》linux date命令及系統時間設定

2 》我使用過的linux命令之date - 顯示、修改系統日期時間

3 》linux shell實現隨機數的多種方法

4 》linux cksum用法

顯示目前的格林威治時間

以指定的格式顯示系統當前的時間

format的形式如下:

注意以下大小寫的區別:

注意以上格式是可以任意組合的,還可以包括非格式串,比如 date 「+今天是%y-%d-%m,現在是$h:%m:%s」

例項:指定時間,日期是今天:date -d hh:mm:ss

指定2023年以來的秒數:

今天:date

幾(n)天前:date -d 「+n days ago」

幾(n)天後 : date -d 「-n days ago」

幾(n)週前:date -d 「+n weeks ago」

幾(n)週後:date -d 「-n weeks ago」

幾(n)月前:date -d 「+n months ago」

幾(n)月後:date -d 「-n months ago」

幾(n)年前:date -d 「+n years ago」

幾(n)年後:date -d 「-n years ago」

相應的有 時 分 秒

1. 通過時間獲得隨機數

$ date +%s

1287764773

#獲得時間戳,當前到:1970-01-01 00:00:00 相隔的秒數

#如果用它做隨機數,相同一秒的資料是一樣的。在做迴圈處理,多執行緒裡面基本不能滿足要求了。

$ date +%n

738710457

#獲得當前時間的納秒資料,精確到億分之一秒。

#這個相當精確了,就算在多cpu,大量迴圈裡面,同一秒裡面,也很難出現相同結果,不過不同時間裡面還會有大量重複碰撞

$ date +%s%n

1287764807051101270

#這個可以說比較完美了,加入了時間戳,又加上了納秒

1.2 通過時間來獲得隨機數。
#!/bin/sh

#獲得隨機數返回值,shell函式裡算出隨機數後,更新該值

function random

()#得到1-10的seq資料項

for i in

do out=$(random 11

20)//接受函式的標準輸出

echo

$i,"[11,20]",$out

done

其實,linux已經提供有個系統環境變數了,直接就是隨機數,

$ echo

$random

#產生乙個[0, 32767)隨機數

$random * $max / 32767 + 1;

#產生乙個[1, max) 隨機數;

$random % 900 + 100

#產生乙個三位數的隨機數;

linux的uuid碼也是有核心提供的,在/proc/sys/kernel/random/uuid這個檔案內,在使用hibernate 生成主鍵時,我們經常用這個,所以在這就不錯介紹了;

$ cat /proc/sys/kernel/random/uuid

dff68213-b700-4947-87b1-d9e640334196

$ cat /proc/sys/kernel/random/uuid

7b57209a-d285-4fd0-88b4-9d3162d2e1bc

#連續2次讀取,得到的uuid是不同的

$ cat /proc/sys/kernel/random/uuid| cksum | cut -d

' '-f

12141807556

#同上方法得到隨機整數

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...

隨機數 科普 真隨機數和偽隨機數

位元幣使用者很喜歡討論 非對稱加密 橢圓曲線 量子計算機 這類高深莫測的話題,然後再以一種非常莫名其妙的方式把幣弄丟,比如說 隨機 隨機很重要,對於位元幣這種密碼學電子貨幣來說,尤其重要。可惜社群內對於隨機的討論並不多,導致很多人缺乏正確的認識,因此,我們今天就和大家聊聊隨機。說到隨機,有兩個必須要...

隨機數 偽隨機數

隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...