1 Static Function rand() 2 x = (x * 37 + 27) Mod 1000 3 rand = x 4 End Function VB代码 伪随机数算法--线性同余法 时间: 2024-10-29 02:00:40
学校练习,简单的我就不放上来了,值得整理的,我保存一下 习题9 1.1. 伪随机数(线性同余法) 1.1.1.算法描述 我们使用线性同余法,来限定一些离散点在y=a*x+b上. 1.1.2.伪代码 random(n,m,seed,a,b) //根据现行同余法生成n个伪随机书的一个序列 //输入:一个正整数n和正整数参数m,seed,a,b //输出:随机数组 r0<-seed for i<-1 to n do ri<-(a*ri-1+b) mod m end 1.1.3.算法实现
最近朋友提出一个问题,自己编写函数生成随机数,一开始没有认真思考,后来想了一下,如果是学习过计算机密码学,应该很快就能设计出一些算法,这里使用了数论领域的相关知识--线性同余法简单实现了生成随机数算法. 以下是网上关于随机数生成的一类说法: 在计算机上可以用物理方法来产生随机数,但价格昂贵,不能重复,使用不便.另一种方法是用数学递推公式产生,这样产生的序列与真正的随机数序列不同,所以称为伪随机数或伪随机序列,只要方法和参数选择合适,所产生的伪随机数就能满足均匀性和独立性,与真正的随机数具有相近的
以下是网上关于随机数生成的一类说法: 在计算机上可以用物理方法来产生随机数,但价格昂贵,不能重复,使用不便.另一种方法是用数学递推公式产生,这样产生的序列与真正的随机数序列不同,所以称为伪随机数或伪随机序列,只要方法和参数选择合适,所产生的伪随机数就能满足均匀性和独立性,与真正的随机数具有相近的性质. 以下是一个使用了线性同余的递推公式: Xt = (X0 * 17 + 29) mod 500 线性同余中的线性,是指"线性"表示方程中 x 的次数是一次,mod 取余运算符则体现了&qu
伪随机数概念在我大学一年级接触C语言基础的时候就听说过,并熟练掌握C语言中rand()函数的使用方法.不过,当时我对伪随机数的认识基本也就停留在百度百科那种小白水平,最多就知道老师说我们用的随机数是假的,是通过某种算法实现的.最近学习计算物理学讲到Monte Carlo方法时,通过课本和互联网才算真正意义上理解了什么是伪随机数.借此文好好总结一下吧! 一.随机数的分类 在计算物理学中,随机数被准确地分成了三类:真随机数.准随机数.伪随机数.那么这三种的区别是什么呢?拷贝一段书上的定义(我觉得写的
Random 转载内容,有更改,感谢原作者() Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequence是相同的 也可以调用Math.random()生成随机数 Random实例是线程安全的,但是并发使用Random实例会影响效率,可以考虑使用ThreadLocal
/**Keil Lib*2015.6.12*Pass*by lort*/uint32 Srandx ; uint32 SrandK = 1103515245;//0x41C64E6D;uint32 SrandB = 12345;//0x3039; void os_srand(uint32 seek){ Srandx =seek;}uint32 os_rand (void){ Srandx = Srandx *SrandK +SrandB ; return (Srandx>>1
查找基本概念: 查找又称为检索,指从一批记录中找出满足指定条件的某一记录过程.在日常生活中比如通讯录查找,字典查找等经常使用查找方法:在程序设计中,查找在许多程序中需要占用很多时间,因此,一个好的查找方法可以提高程序的运行速度. 主关键字和次关键字: 在需要查找的数据结构中,每条记录一般包含多个数据域.查找条件一般是给定其中的一个或几个域的值,这些作为查找条件的域成为关键字(KEY),如果关键字可以唯一标示数据结构中的一条记录,则称此关键字(Primary Key):若关键字不能唯一区别各个不同
本文中,我们讨论了三个部分的内容: 什么是线性结构,线性结构有哪些特点 . 详细介绍了一个最简单线性结构顺序表,并且通过源代码进行一些的分析. 最后还举了一个例子,让我们更好的理解顺序表. 第一部分:什么是线性结构,线性结构有哪些特点 什么是线性结构,线性结构是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这 种一对一的关系指的是数据元素之间的位置关系,即: (1)除第一个位置的数据元素外,其它数据元素
工控领域经常会涉及速度加减速的算法:线性加减速,S曲线加减速(sin函数,拓展其他三角函数曲线), 贝塞尔曲线,等等. 线性加减速: 设定起始速度V0,目标速度V1,加速时间Ta(s,或加速度),这个的任务执行周期为ΔT( ms 级 或者设定定时器,定时时间必须大于任务周期否则还是按任务周期计算输出). int iCounter ; iCounter = Ta/(ΔT/1000) ; //计算达到输出 任务需执行的 周期数. for(int i =0; i<iCounter;