c语言10以内随机数生成器,C语言随机数生成器
目前所看到的所有公开的关于C随机数生成器的中文资料,都提到经典的线性同余法( LCG, linear congruential generator),并认为是默认的实现方法。这个说法并不准确。
线性累加反馈法
线性累加反馈法,即LAFM(linear additive feedback method),以下是GLIBC使用的线性累加反馈法的流程描述。其中,2147483647 = 2^31 – 1,4294967296 = 2^32. 所有变量都是整数。
GLIBC的实现
GLIBC实现了以上两种算法。LAFM生成器标记为 TYPE1, TYPE2, TYPE_3 和 TYPE4 类型,LCG 生成器标记为 TYPE0。相比LCG,LAFM生成器预先生成有很多初始状态,消除了LCG生成器的周期性遍历的属性,在同一个周期内,可以多次获取到相同的随机数。为了提高随机数生成的时间和空间效率,在计算伪随机序列时GLIBC使用指针指向包含前驱随机值的数组,写法与按上述公式步骤直译的方式有所不同。
LCG生成器状态数组
LCG生成器在状态数组(buf->state)长度为8字节时才会使用。 状态数组长度更大时则会启用LAFM生成器。通常在使用rand()方法时,会使用srand()设置种子常量,这时状态数组默认就是128字节, 所以实际会启用LAFM生成器。
线性同余法
由于LCG计算简单,极省内存,很适合内存和计算资源比较紧张的嵌入式环境。但LCG有一个严重的缺陷,即产生的伪随机数强依赖于上一次生成的随机数,且重复周期等于随机范围,不能用于随机数要求高的场合。
c语言10以内随机数生成器,C语言随机数生成器相关推荐
- c语言10以内位运算,C语言基础知识--位运算
1.原码,反码,补码: (1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负:其余n-1位为数值位,各位的值可为零或一.当真值为正时,原码.反码.补码数值位 完全相同:当真值为负时, ...
- c语言10以内得加法,10以内加法练习题(最新整理)
<10以内加法练习题(最新整理)>由会员分享,可在线阅读,更多相关<10以内加法练习题(最新整理)(48页珍藏版)>请在人人文库网上搜索. 1.0+0=1+5=9+0=1+0= ...
- c语言10以内四则运算,C语言-四则运算
<C语言-四则运算>由会员分享,可在线阅读,更多相关<C语言-四则运算(10页珍藏版)>请在人人文库网上搜索. 1.四则运算姓名:学 号:班级:1.功能结构图四则运算加法运算减 ...
- c语言 10以内加法,求助 给小学生出题,自己选加减乘除 做10题 10以内的数 然后统计分...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void Menu(void) { printf("1,加法 2,减法 3,乘法 4,除法 ...
- 求10以内平均数的c语言,求助 给小学生出题,自己选加减乘除 做10题 10以内的数 然后统计分...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void Menu(void) { printf("1,加法 2,减法 3,乘法 4,除法 ...
- c语言10以内的加法程序代码,怎样用c语言编写个能随机出10以内加减法题目的程序...
#include "stdio.h" #include "stdlib.h" #include "time.h" #include &quo ...
- C语言10以内加法口诀表,10以内加减法口诀表可打印.doc
1+1=2 2+1=3 1+2=3 10 以 内 加 法 口 诀 表 3+1=4 2+2=4 1+3=4 4+1=5 3+2=5 2+3=5 1+4=5 5+1=6 4+2=6 3+3=6 2+4=6 ...
- c语言 10行帕斯卡三角形,C语言帕斯卡三角形打印示例
帕斯卡三角形是向工程学生教授的典型例子之一. 它有很多的解释. 其中一个着名的是它与二项式方程的使用. 三角形之外的所有值都被认为是零(0). 第一行为0 1 0,而只有1获取帕斯卡三角形中的空格,0 ...
- c语言10个数输出最大数,C语言怎么输入十个数输出最大值
C语言怎么输入十个数输出最大值 C语言求输入的10个数中最大值的编程方法如下: 1.首先需要定义一个整型数组空间,因为这里需要输入十个数,所以数组空间为10个.int a[10]; 2.接着定义一个最 ...
- c语言10种复合赋值运算符,C语言复合赋值运算符
C语言复合赋值运算符 在C语言的赋值中有一种特殊的赋值运算符,就是复合赋值运算符.下面是关于C语言复合赋值运算符的'相关介绍! 复合赋值运算符就是在赋值符"="之前加上其它二目运算 ...
最新文章
- 【项目管理】项目经理每天、每周、每月应该做的都在这
- 基于Visual Studio2010讲解C#4.0语法(5)--使用CollectionClasses
- 颜宁教授当年若当选科学院院士,她还会出走清华吗?
- 成功解决h5py\_init_.py:26:FutureWarning: Conversion of the second argument of issubdtype from `float` to
- [云炬创业基础笔记]第五章创业机会评估测试8
- 【AI芯片格局最全分析】国内AI芯片百家争鸣,何以抗衡全球技术寡头
- mysql 5.7.17源码包_centos7 mysql5.7.17源码安装
- viper4android fxifi,ViPer4android. FX顶级音效!
- WPF系列 自定控件
- java程序性能优化_怎么做JAVA程序性能优化
- 当你用浏览器打开一个链接的时候,计算机做了哪些工作
- 沉浸式状态栏html5实现,Fragment和Activity两种沉浸式状态栏的实现
- pytorch torchvision.transforms.CenterCrop
- mysql 拼音首字母_Mysql:拼音首字母查询(超高性能)
- 程序员开发的“逆天”软件
- android+显示ui布局,[Android ]UI布局 (线性布局+相对布局)
- 甘肃暴雨强度公式_甘肃暴雨强度公式
- ps4如何无线连接网络连接服务器,PC党最佳选择!达人发布PS4手柄无线连接PC教程...
- java、web前端开发日常记录
- 循环不变式、数学归纳法、归纳推理和演绎推理学习总结
热门文章
- 获得与回馈丨点评中国两大金融机构基于OpenStack的网络联合实践
- 基于视频/摄像头的简单行为动作识别模型的训练步骤
- 英语体系----词根词缀等----持续补充(词根词缀等,词汇,语法,简单句,长难句,写作)
- AST使用eval运行函数,更换数值
- 对国产操作操系统的一点看法
- Since Due to Because of Because 的用法和区别
- 360浏览器打不开html5文件,电脑360浏览器打不开网页原因-浏览器打不开解决方法 - 系统家园...
- openstack搭建(私有云、公有云)云计算遇到的相关问题汇总整理
- 2009年 上海证券交易所新一代交易系统有多牛逼
- 电影推介2017-01-07