吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1399|回复: 16
收起左侧

[讨论] 这玩意能算真随机数吗

[复制链接]
pythonhnm 发表于 2023-12-17 13:29
学了一会后瞎写的
[Python] 纯文本查看 复制代码
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)))[2:]
    phymem = __psutil.virtual_memory()
    Memorystate = bin(int(str(phymem.percent).replace('.','')))[2:]
    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'))[2:]
    binno = bin_noise[user_len:user_len+2]
    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))

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

eenny820 发表于 2023-12-17 14:23
看不懂,我只会excel的随机数
头像被屏蔽
QvQsuipian 发表于 2023-12-17 14:27
DEATHTOUCH 发表于 2023-12-17 14:46
这种是算真随机的了,几乎不可复现,可以测一下分布的均匀性来看看实用性。
小楼昨夜东风 发表于 2023-12-17 15:37
DEATHTOUCH 发表于 2023-12-17 14:46
这种是算真随机的了,几乎不可复现,可以测一下分布的均匀性来看看实用性。

都是高手,聊天都没看懂,均匀性反应实用性吗?
lyjccmm 发表于 2023-12-17 16:20
你涉及到了现实物理,就是真随机,但是后面肯定是需要测试这个随机的分布的,不然有可能造成,随机没问题但是算法出问题的情况
hrh123 发表于 2023-12-17 17:21
对于代码我只想说,并不是算法堆的越多随机性越高,写了一大堆看着倒是挺爽挺随机,实际上不一定是你想的那么无敌,当然这倒问题不大,取值的随机性应该够了虽然也就这样,重要的是速度慢占用内存高,是不符合一般要求的,不具简单性和快速性,在真正的随机模拟计算中就是个LS方法(非恶意)。

再说说真随机,其实真随机感觉很多人追求,一没那么高大上,二没啥必要。真随机数指用物理方法作为随机源产生的随机数,上到放射性衰变,下到掷骰子都是物理方法。实际应用中,去不再来,无法再次产生,价格昂贵,且不能对求解的问题进行复算,稳定性保障也存在许多困难,统计计算中用的不多的。
hrh123 发表于 2023-12-17 17:32
小楼昨夜东风 发表于 2023-12-17 15:37
都是高手,聊天都没看懂,均匀性反应实用性吗?

计算机利用数学方法产生随机数一般要求之一就是产生的序列具有总体简单子样的一些概率统计性质,分布的均匀性就是其中一个。至于检验的意义,就是检验该随机数可否用于统计模拟计算,可以理解为实用性吧。
apull 发表于 2023-12-17 17:39
这个随机数不错,就是有些费时间。
APWN 发表于 2023-12-17 17:56
真的能实验数学意义上的随机吗? 理论上目前的随机算法只要种子确定,得到的数应该是确定的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 18:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表