fortran产生随机数以及PYTHON产生小数序列

这篇博客介绍了如何利用钾-40放射性衰变的随机性生成真随机数,通过盖革计数器检测香蕉中的钾-40衰变来制作简单的随机数生成器。此外,还探讨了Python中生成小数序列的方法。文章讨论了随机数在模拟和加密等领域的重要性,并提供了一个将物理随机性转化为数字随机数的实例。
摘要由CSDN通过智能技术生成

                program main
                implicit none
                integer::i
                real::r1,r2,r3,r4
                call random_seed()
                
                open(12,file='d:\\test\\r1.txt',status='replace')
                do      i=1,100
                call random_number(r1) !R1,R2 U(0,1)
                call random_number(r2)
                r3=sqrt(-2*log(r1))*cos(r2)       !muller and box 1958
                r4=sqrt(-2*log(r1))*sin(r2)       !AMPLITUDE AND PHASE
                write(12,*) r3
                end do
                close(12)
                !print *,r1,r2
                !PRINT *,R3,R4  !R3,R4 N(0,1)
                end

由两个均匀分布独立随机变量r1,r2产生两个独立高斯分布随机变量r3,r4

利用钾-40放射衰变是完全随机的这一原理,就可以做成真随机数生成器。

盖革计数器全称盖革-米勒计数器(Geiger-Müller counter),从1928年开始就是一个专门用来探测电离辐射强度的记数仪了。

 它涉及的算法非常简单,写一个主循环,让寄存器从0加到n,等于n时,寄存器重置为0。
一旦在这个过程中检测到装置上方香蕉中的钾-40衰变放射出粒子,主循环就暂停,执行中断程序,将寄存器中的最后一个值作为随机数返回,然后寄存器再重置为0,继续循环。

比如,我们可以让寄存器从0加到15,并用十六进制表示这几个数(0-15也就为0-9、A-F),因此两位十六进制数就可以组成1个字节的随机数了,最终可以得到十进制范围内0-255的任意数。

一个十六进制比如6F转换成二进制数就等于0110 1111,一共有8位,而一个字节正好等于8位二进制数。这就是一个香蕉随机数生成器的诞生。以往要想获得真正的随机数,常见的做法就是将一些大自然的物理现象产生的随机量转化成数字信息。
比如电阻热噪声、半导体中的雪崩效应、电路混沌效应等。
还有人甚至会用到更为复杂的量子现象,比如散粒噪声、光电效应,以及宇宙微波背景辐射,也就是前面提到的放射性衰变。
现在,只需要一个香蕉、300多块的硬件就可以做成,简直不要太方便。
事实上,GitHub上其实已经有很多类似项目,推特上也有一个专门账号曾每天发200多个随机数坚持了一年。

PYTHON产生小数序列

def frange(start,stop, step=1.0):

     while start < stop:

           yield start

           start +=step

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weiyiwen1982

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值