其中A,B,M是产生器设定的常数。
LCG的周期最大为M,但大部分情况都会少于M。要令LCG达到最大周期,应符合以下条件:
1、B,M互质;
2、M的所有质因数都能整除A-1;
3、若M是4的倍数,A-1也是;
4、A,B,N0都比M小;
5、A,B是正整数。
从该式可以看出,该算法由于构成简单,具有以下优点:
其中B和M的选择对计算结果影响很大:
Python2.7.18源码应用LCG截取:
wiki-Linear_congruential_generator
首先你要找到源码的位置,你可以使用下面的方法:
如果你可以在命令行运行python,你可以使用下面的命令查看目录。
>>> import string>>> string.__file__
'/usr/lib/python2.7/string.pyc'
>>>
对应目录下的string.py就是package的源码,不过有些库因为是c写的,会提示错误,这样的库就需要你下载python源码,直接看c的源文件了。
如果解决了您的问题请采纳!
如果未解决请继续追问!
最近在学习python源码,感觉python的IDLE使用起来不是太方便,所以选择交互性良好的ipython来进行学习。
但是系统自带的python没有源码,所以要修改python源码是不可能的,所以得自己去官网下载并安装相应的python版本。
为了使得在学习python源码过程更方便,我们可以配置自己安装的python版本使用相应版本的ipython。
1. 首先得正确安装ipython,命令为pip install ipython
2. 安装自己的python版本,我是安装在/home/foo/python/python2.7.6下
3. 查看已经ipython的安装路径,使用which ipython命令查看
4. 编辑/usr/local/bin/ipython,将#!行更改为你自己安装的python的路径
5. 查找已经安装的ipython的依赖关系,并将所有的依赖模块的路径提取出来(不同的系统可能依赖关系也不一样)
6. 在~/.bashrc中将环境变量PATHONPATH设置步骤5中提取的路径,并导出
7. 启动ipython,由于系统版本原因在启动时可能会出现一些警告,但是你可以比较轻松地根据提示去掉警告。