python3 线性同余发生器 ( random 随机数生成器 ) 伪随机数产生周期的一些探究
import random
x=[str(random.randint(0, 5)) for i in range(10)]
x_str=''.join(x) y=[str(random.randint(0, 5)) for i in range(100000000)]
y_str=''.join(y) if x_str in y_str:
print("共有多少:")
print(y_str.count(x_str))
print('第一个出现位置')
print(y_str.find(x_str))
else:
print("没有")
如上面代码所示, 突然想起来编程语言中的随机数产生是采用线性同余发生器产生的,那么既然是尾随机数它必然有重复的时候,那么我们有没有可能找到它重复的时候,或者发行一个周期呢,所以由此写了上面的代码。
注: 该代码比较吃内存没有16G 内存的电脑可能是跑不了上面的代码的。
一共跑了两次, 结果如下图:


首先并没有发现什么周期可言,估计这个笨方法是发现不了的,前提是它真的有周期;
其次, 我们发现及时是5以内的整数, 产生的序列出现重复的时候都是要1000万个数生成以后才会出现重复的序列;
最后,我们知道伪随机数是会出现重复的,但是我们能遇到的可能性不大,理论上存在,实践中可以不考虑。
附加:
如果随机数的产生设置为 100以内的整数, 跑了N多次也没有发现重复的序列。 即修改上面代码:
random.randint(0, 5) 为
random.randint(0, 100) 由此可以发现伪随机数其实还是比较靠谱的。
python3 线性同余发生器 ( random 随机数生成器 ) 伪随机数产生周期的一些探究的更多相关文章
- 解密随机数生成器(二)——从java源码看线性同余算法
Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术 ...
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom(转)
文中的 Random即:java.util.Random,ThreadLocalRandom 即:java.util.concurrent.ThreadLocalRandomSecureRandom即 ...
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random,ThreadLocalRandom 即: ...
- [nRF51822] 16、nRF51822的随机数生成器,及随机数生成器的一些知识(可以帮您补补随机数发生器的知识)
1.前言 随机数生成器在通信.加密.图像传输等领域应用广泛,且一般起到关键性作用.我在最近设计的一个近场射频通信协议的碰撞避退算法的过程中,便对此有深深体会. 2.伪随机数发生器 随机数发生器一般包括 ...
- [转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp84 Random即:java.util.Random, ThreadL ...
- Random.org -- 真正的随机数生成器
接触过程序设计的人一定对随机数不陌生.随机数的用途非常广,比方在測试.分布和统计程序.游戏中. 大多数编程语言也提供了随机数库.能够方便的使用. 只是从严格意义上来讲,这些程序生成的随机数并非真正的随 ...
- 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
原文:[原创]开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器 本博客所有文章分类的总目录:http://www.cnblogs.com/asxiny ...
- BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘
题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...
随机推荐
- tp5.0 composer命令插件
1.单元测试composer require topthink/think-testing 1.* (5.0) composer require topthink/think-testing 5.1官 ...
- Python 爬虫-正则表达式
2017-07-27 13:52:08 一.正则表达式的概念 (1)正则表达式是用来简洁表达一组字符串的表达式,最主要应用在字符串匹配中. 正则表达式是用来简洁表达一组字符串的表达式 正则表达式是一 ...
- centos7: vsftpd安装及启动
安装: yum -y install vsftpd service vsftpd start 注意这句:centos7不能这么启动了 chkconfig vsftpd on vsftpd.conf配 ...
- SSH Secure Shell Client--- the host may be dow
the host may be down,or there may be a problem with the network connection. Sometimes such problems ...
- sql一些语句性能及开销优化
1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用 ...
- LeetCode--176--第二高的薪水
问题描述: 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 ...
- 20170709pptVBA递归删除LOGO图片与文字
Public Sub StartRecursionFolder() Dim Pre As Presentation Dim FolderPath As String Dim pp As String ...
- 3-5 回顾,快速二分法的疑点解惑:为啥先右j移动?因为设定a[left]为基准点
快速二分法的疑点解惑:为啥先右j移动?因为设定a[left]为基准数 , 1] [91, 86, 42, 46, 9, 68, 77, 46, 7, 1] [91, 86, 42, 46, 9, 68 ...
- 1月11日Atom 插件安装。
查看已安装的Atom插件(前提:已经安装Atom) 打开终端 输入apm ls命令,回车. 未安装任何插件时,显示如下 Built-in Atom packages (89) ...此处省略... / ...
- P4721 【模板】分治 FFT
其实是分治ntt,因为fft会爆精度,真*裸题 分治过程和fft的一模一样,主要就是ntt精度高,用原根来代替fft中的\(w_n^k\) 1.定义:设m>1,(a,m)==1,满足\(a^r= ...