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