随机数产生原理及应用(再续二)

使用均匀分布随机数产生器构造任意分布的随机数产生器 阅读详情

  在网上找到了一个产生随机数的函数,没有种子。直接就可以用,但有个坏处,就是每次运行结果都一样。

  程序如下:

  unsigned int Random32(void) {  
     
    static const unsigned long x[55] = {  
      1410651636UL, 3012776752UL, 3497475623UL, 2892145026UL, 1571949714UL,  
      3253082284UL, 3489895018UL, 387949491UL, 2597396737UL, 1981903553UL,  
      3160251843UL, 129444464UL, 1851443344UL, 4156445905UL, 224604922UL,  
      1455067070UL, 3953493484UL, 1460937157UL, 2528362617UL, 317430674UL,  
      3229354360UL, 117491133UL, 832845075UL, 1961600170UL, 1321557429UL,  
      747750121UL, 545747446UL, 810476036UL, 503334515UL, 4088144633UL,  
      2824216555UL, 3738252341UL, 3493754131UL, 3672533954UL, 29494241UL,  
      1180928407UL, 4213624418UL, 33062851UL, 3221315737UL, 1145213552UL,  
      2957984897UL, 4078668503UL, 2262661702UL, 65478801UL, 2527208841UL,  
      1960622036UL, 315685891UL, 1196037864UL, 804614524UL, 1421733266UL,  
      2017105031UL, 3882325900UL, 810735053UL, 384606609UL, 2393861397UL };  
    static int init = 1;  
    static unsigned long y[55];  
    static int j, k;  
    unsigned long ul;  
   
    if (init)  
    {  
      int i;  
     
      init = 0;  
      for (i = 0; i < 55; i++) y[i] = x[i];  
      j = 24 - 1;  
      k = 55 - 1;  
    }  
   
    ul = (y[k] += y[j]);  
    if (--j < 0) j = 55 - 1;  
    if (--k < 0) k = 55 - 1;  
    return((unsigned int)ul);  
} 

 

我把结果给截屏了。如下:

                                                           

 

    生成了10万个数,居然没有循环出现。还是不错的。但不知道它的设计原理是什么。前面那一段X数组还真了解它的意义。看来还得继续学习啊。

   就写到这里吧。。。。。

  

   欢迎大家到我空间留言。。。。^_^

openssl中随机数产生的原理 概述 第一步用RAND_poll()初始化MD_DIGEST_LENGTH长度的全局变量md。 1.1 初始化过程用读取/dev/urandom /dev/urandom等方式读取原始的32字节,以RAND_add的方式将结果存入全局数组md。(UNIX的实现过程) 1.2 然后RAND_add上pid、uid、time等数据。 RAND_add “…” 计算pid、time、FILETIME、... 阅读详情

相关推荐

FPGA设计中,产生LFSR伪随机数

今天给大侠带来在FPGA设计中,产生LFSR伪随机数,话不多说,上货。 一、概述 通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。 这里的“伪”的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到...

3693

随机数产生原理

引言利用数学的方法产生随机数的优点具有速度快、可对模拟问题进行复算检查、具有较好的统计特性。通过检验符合均匀性、随机性、独立性就可以当作真正的随机数。随机数经典的随机数产生方法为是线性同余法,即Linear Congruence Generator (LCG),由Lehmer于1951年提出。 同余:对于两个整数A、BA、B,如果它们同时除以一个自然数M的余数相同,就说A、BA、B对于模M同余,A

wokaowokaowokao12345的专栏 3万+

ESP32C3的I2S接口详解:以驱动PCM5102A为例,避开时序与配置的那些坑

本文深入解析ESP32C3的I2S接口驱动PCM5102A DAC的完整解决方案,涵盖时序对齐、PCB优化和寄存器级配置。通过实际案例分享时钟树分析、信号完整性设计和底层调试技巧,帮助开发者避开常见陷阱,实现高质量音频输出。重点探讨了I2S协议栈、电源滤波优化及DMA传输异常处理等关键技术要点。

weixin_30254435的博客 299

C语言产生各种随机数

1. 基本函数         在C语言中取随机数所需要的函数是: int rand(void); void srand (unsigned int n);     rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件: #include stdlib.h>

nancygreen的专栏 2141

1.4 《SST通用技术规范》整体框架与核心条款解读

本小节以**GB/T《电力电子变压器通用技术要求》**(固态变压器SST核心通用规范)为核心依据,结合电力电子变压器技术特性与工程应用边界,系统解析规范的整体章节框架、层级逻辑与强制性/推荐性核心条款,明确规范与传统工频变压器标准的差异,为SST拓扑设计、性能验证、出厂检验与工程落地提供标准化依据。全文以标准原文、期刊文献数据与试验规范为支撑,无主观推演与感性表述。

技术工作者 1692

AUTOSAR RTE配置实战:从ECU分区到Task映射的完整指南

本文提供了一份AUTOSAR RTE配置的完整实战指南。从创建ECU分区、定义OS任务,到实现Runnable Entity与Task的精确映射,详细解析了每一步的操作要点与常见陷阱。文章结合配置工具界面,旨在帮助开发者高效完成RTE配置,确保系统实时性与数据一致性,是掌握AUTOSAR核心开发流程的实用参考。

weixin_29228203的博客 485

随机数产生原理及应用(续)

3连续型随机变量的生成:      3.1反函数法      采用概率积分变换原理,对于随机变量X的分布函数F(X)可以求其反函数,得:Xi=G(Ri)其中,Ri为一个0-1区间内的均匀分布的随机变量.F(X)较简单时,求解较易,当F(X)较复杂时,需要用到较为复杂的变换技巧。 3.1.1平均分布:例:已知炮弹对目标的方位角Fi在0-2*P内均匀分布,试用(0,

如果你知道去哪里,全世界都会为你让路 4301

【实战指南】RF-DETR目标检测全流程:从数据准备到工业部署

本文详细介绍了RF-DETR目标检测模型的全流程应用,从数据准备、模型训练到工业部署。RF-DETR作为基于Transformer的先进模型,在COCO基准测试中表现优异,推理速度超越YOLOv8,特别适合工业场景。文章还提供了数据标注、COCO格式转换、超参数调优及边缘设备部署的实用技巧,帮助开发者高效实现目标检测任务。

weixin_29081101的博客 421

简述计算机随机数生成原理

在网上查阅了很多资料,总结了一下随机数方面的知识;如果你有很少的时间来了解这方面的内容,或者你已经阅读了很多这方面的内容,那么,我想,我得总结可能会帮到你。 (本人在计算机行业时间很短,若以下内容出错或不严谨的话,欢迎指出。不胜感激!) 1. 所有的计算机产生的随机数都是伪随机数。   2. 伪随机数的意思是他们的产生是有规律的。   3. 伪随机数的生成 由 “种子+计算方法

mengyue000的博客 1万+

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1074

长上下文技术的底层逻辑:Attention、压缩、缓存与跨页推理

如果把模型的参数视为“固化智能”,动态智能(Dynamic Intelligence)——模型不必依赖训练时的记忆,而是可以随时调用外部信息。这一点正在改变大模型的范式:Prompt 不再是输入,而是“操作系统事件”文档不再是知识,而是“模型的临时记忆”模型不再是一段神经网络,而是一个“具备阅读循环的推理引擎”当我们把上下文从 128K 拉到百万级,我们做的不是扩容,而是让模型第一次拥有阅读、回溯、定位、跨页分析的能力。这是一种新的智能。

aifs2025的博客 997

随机数产生原理及应用(再续)

线性同余方法(LCG)是个产生伪随机数的方法。它是根据递归公式: 其中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是正整数。  下

如果你知道去哪里,全世界都会为你让路 867

【PyTorch项目实战】之ResNet系列:resnet18、resnet34、resnet50、resnet101、resnet152

ResNet (Residual Network) :是一种深度卷积神经网络(CNN)架构,其核心思想是引入残差学习(Residual Learning)机制,通过跳跃连接(skip connections)来解决深层网络训练中的退化问题。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 6374

C语言产生随机数的方法

原理概述 在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原型是: void sra...

xiezhg5的博客 2万+

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5083

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

随机数产生原理及应用

摘要:         本文简述了随机数的产生原理,并用C语言实现了迭代取中法,乘同余法等随机数产生方法,同时,还给出了在符合某种概率分布的随机变量的产生方法。   关键词: 伪随机数产生,概率分布        1前言:        在用计算机编制程序时,

LJ911的专栏 1300

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

c语言产生随机数的函数

1.产生随机数  (1)使用该函数首先应在开头包含头文件stdlib.h(2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。(3)rand()函数没有输入参数,直接通过表达式rand()来引用;(4)标准C并没有规定int整数的位数,int的位数由编译器定义,例如:       TC编译器中in...

MADE_哒哒 4万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C语言产生随机数

c语言可以使用rand函数创建随机数,其头文件为stdlib.h,具体实例如下: ... 许多博客都提到,rand产生的随机数是伪随机数,其产生原理是一种简单的映射关系,映射,也即函数关系,其表明某一个特定的输入将产生特定的输出,这里的输入,也就是所谓的随机数种子。此外,作者们还提到,随机数种子是计算机启动时也就确定了的,也就是说如果不手动改变随机数种子,程序产生的随机数总是确定的,这与我们第一节得到的结论相悖。但是,随机数种子确实是存在的,以下实例将会证明这一观点:

weixin_58966834的博客 3801

最透彻的关于“随机数种子”和“伪随机数”的产生原理

总之: 1.伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。 2.随机种子来自系统时钟,确切地说,是来自计算机主板上的定时/计数器在内存中的记数值。 3.随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就不会变。也就是说,伪随机数也是某种对应映射的产物,只不过这个自变量是系统的时间而

xzp7772009的专栏 2万+

C语言中如何产生一个随机数及其原理。

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int

qq_41658437的博客 4万+

随机数的产生原理与实现

随机数的产生原理与实现   下载本节例子程序和源代码 (3.91 KB) 随机数的产生在病毒中占有十分重要的地位,尤其是在变形引擎中,没有它就不成事了……因此,今天就让我们来探讨一下如何产生一个随机数。首先值得说明的是,要产生一个随机数,方法有很多种,例如混沌和分形理论(原理比较复杂,但是公式却异常简单,将来有空的话我会介绍一下)……但是这些方法的缺点是计算难度大,需要花费的时间多,有没有

老汇编学Win32 6658

C语言中如何产生一个随机数及其原理

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。 可能大家都知道C语言中的随机函数random,可是random函数并...

超级张大侠的博客 3609

计算机随机数的产生

计算机中随机数的产生大家可能很多次讨论过随机数在计算机中怎样产生的问题,在这篇文章中,我会对这个问题进行更深入的探讨,阐述我对这个问题的理解。首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。伪随机数并不是假随机数,这里的“

6077
上一篇: 12个乒乓球的问题
下一篇: hash实现--开放寻址方式
aa2010aa
博客等级 码龄17年 9粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值