这玩意能算真随机数吗
学了一会后瞎写的import os as __os
import getpass as __getpass
import time as __time
import psutil as __psutil
import hashlib as __hashlib
def getnoise(hashed=True):
'''To Get the physical args.'''
pid = __os.getpid()
user = __getpass.getuser()
now = __time.time()
CPUstate = bin(int(__psutil.cpu_percent(1)))
phymem = __psutil.virtual_memory()
Memorystate = bin(int(str(phymem.percent).replace('.','')))
now2 = __time.time() + 0.2
no_hashed = str(pid) + str(int.from_bytes(user.encode(),'little')) + str(now).replace('.','') + CPUstate + Memorystate + str(int(now))
if hashed:
return __hashlib.sha256(no_hashed.encode()).digest()
return no_hashed
def randbool():
'''Gen a random bool.'''
noise = getnoise()
user_len = len(__getpass.getuser())
bin_noise = bin(int.from_bytes(noise,'little'))
binno = bin_noise
if binno == '00' or binno == '01' or binno == '11':
return False
return True
def randint(a,b):
'''Gen a random int.'''
if b-a > 255:
raise TypeError('b minus a can not big than 255!')
lists = list(range(a,b))
need = 256 // len(lists)
other = 256 % len(lists)
sbox = lists * need + lists[:other]
for one in sbox:
if randbool():
return one
return sbox[:-1]
if __name__ == '__main__':
print(randbool())
print(randint(1,7))
看不懂,我只会excel的随机数
这种是算真随机的了,几乎不可复现,可以测一下分布的均匀性来看看实用性。 DEATHTOUCH 发表于 2023-12-17 14:46
这种是算真随机的了,几乎不可复现,可以测一下分布的均匀性来看看实用性。
都是高手,聊天都没看懂,均匀性反应实用性吗? 你涉及到了现实物理,就是真随机,但是后面肯定是需要测试这个随机的分布的,不然有可能造成,随机没问题但是算法出问题的情况 对于代码我只想说,并不是算法堆的越多随机性越高,写了一大堆看着倒是挺爽挺随机,实际上不一定是你想的那么无敌,当然这倒问题不大,取值的随机性应该够了虽然也就这样,重要的是速度慢占用内存高,是不符合一般要求的,不具简单性和快速性,在真正的随机模拟计算中就是个LS方法(非恶意)。
再说说真随机,其实真随机感觉很多人追求,一没那么高大上,二没啥必要。真随机数指用物理方法作为随机源产生的随机数,上到放射性衰变,下到掷骰子都是物理方法。实际应用中,去不再来,无法再次产生,价格昂贵,且不能对求解的问题进行复算,稳定性保障也存在许多困难,统计计算中用的不多的。 小楼昨夜东风 发表于 2023-12-17 15:37
都是高手,聊天都没看懂,均匀性反应实用性吗?
计算机利用数学方法产生随机数一般要求之一就是产生的序列具有总体简单子样的一些概率统计性质,分布的均匀性就是其中一个。至于检验的意义,就是检验该随机数可否用于统计模拟计算,可以理解为实用性吧。
这个随机数不错,就是有些费时间。 真的能实验数学意义上的随机吗? 理论上目前的随机算法只要种子确定,得到的数应该是确定的
页:
[1]
2