隨機性檢測之遊程總數測試

2021-10-04 23:49:43 字數 1626 閱讀 8751

from math import

*#將十六進製制字串轉換為二進位制列表

defconvert

(hexinput)

: bitstr =

int(hexinput,16)

bit =

list

(bin

(bitstr))[

2:] bit =

list

(map

(int

,bit)

)return bit

#讀入十六進製制資料

txtread =

open

("8kb_randomplaintext_0.txt"

,"rb"

)#hexinput = input("請輸入測試序列:")

hexinput = txtread.read(

)txtread.close(

)#print("hexinput:{}".format(hexinput))

sum0 =

0#sum0儲存二元序列每位數相加之和

r =0

#儲存r(k)之和

bits = convert(hexinput)

n =len

(bits)

#儲存二元序列的長度

#print("n:{}".format(n))

for i in bits:

sum0 = sum0 + i

per = sum0/n #二元序列1的佔比

t =2

/ sqrt(n)

#print("per:{}".format(per))

#print("t:{}".format(t))

#判斷執行測試的前提條件

ifabs

(per -

0.5)

< t:

#計算卡方統計量的觀察值

for i in

range(0

,n-1):

if bits[i]

== bits[i+1]

: r = r +

0else

: r = r +

1 v = r +

1#print(v)

p_value = erfc(

abs(v-

2*n*per*(1

-per))/

(2*sqrt(

2*n)

*per*(1

-per)))

print

("p_value:{}"

.format

(p_value)

)if p_value >=

0.01

:print

("測試序列隨機!"

)else

:print

("測試序列非隨機!"

)else

: p_value =

0print

("p_value:{}"

.format

(p_value)

)print

("測試序列非隨機!"

)

MATLAB rand隨機性控制

總結 rand產生的隨機數通過其狀態來控制 控制方法 舊版 rand state x state是狀態,x是乙個整數,可自行設定 sum clock 簡單來說就是利用時間來做引數,以保證產生的隨機數不重複 新版 rng x x為指定的狀態,為整數 或者用 shuffle 一.問題 來自於乙份pso ...

隨機性的控制

無論是平時的工作還是比賽,進行測試的時候一定要把隨機性控制住,使用seed everything的函式基本可以控制住常見的資料探勘過程中的隨機性了,如果涉及到tensorflow keras或pytorch,還需要針對器進行額外的隨機性控制。import os import random def s...

flash 與隨機性 隨機抽取

有時候做 程式的時候會經常希望隨機抽取乙個或者多個數,這時候問題就會因此而產生。在一些時間裡面,看了一些資料關於隨機性這個東西其實很有實用價值。不確定性,如隨機數,隨機移動等等。今天做了簡單的實驗,方法不唯一,也有很多更加完善的方法。但目前還是先把知道的記錄下來。題目一 怎樣隨機抽取乙個數?題目二 ...