计算机语言中,随机函数原理是什么?
看到好多个说法,有说用C、VHDL、汇编(不是IBM-宏汇编)编程,将FPGA、DSP组成伪随机系统电路接入USB接口,然后可以在TC2.0里自构函数产生真正意义上的随机...
看到好多个说法,有说 用C、VHDL、汇编(不是IBM-宏汇编)编程,将FPGA、DSP组成伪随机系统电路接入USB接口,然后可以在TC2.0里自构函数产生真正意义上的随机函数!原理是利用物体热噪声的随机性! 也有说是利用正态分布函数然后再用什么算法产生一个0-1的伪随机数。也有说法是读取系统时间来算法。求个正规点的说法啊。
求解具体原理,最好还有算法 展开
求解具体原理,最好还有算法 展开
5个回答
2013-04-17
展开全部
计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。 伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正是点到了事物的特性,即随机性,但是每种树的叶子都有近似的形状,这正是事物的共性,即规律性。从这个角度讲,你大概就会接受这样的事实了:计算机只能产生伪随机数而不能产生绝对随机的随机数。
随机函数有如下两种:
rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。
srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。
随机函数有如下两种:
rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。
srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。
黄先生
2024-12-26 广告
2024-12-26 广告
矩阵切换器就是将一路或多路视音频信号分别传输给一个或者多个显示设备,如两台电脑主机要共用一个显示器,矩阵切换器可以将两台电脑主机上的内容renyi切换到同一个或多个显示器上;迈拓维矩矩阵切换器种类齐全,性价比高,支持多种控制方式,为工程商采...
点击进入详情页
本回答由黄先生提供
2013-04-17
展开全部
很少有设备拥有随机电路,除非安全性要求很高,大部分随机发生函数采用线性同余产生0到p-1之间的均匀分布,通常用
随机种子s=(a*s+b) mod p进行迭代,函数输出为s^c mod p,其中a, b, c互质,p为质数,s由系统时间等方式初始化;由输出猜测随机种子是一个离散对数方程,很难解,因此安全性较好。
随机种子s=(a*s+b) mod p进行迭代,函数输出为s^c mod p,其中a, b, c互质,p为质数,s由系统时间等方式初始化;由输出猜测随机种子是一个离散对数方程,很难解,因此安全性较好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-17
展开全部
我只知道c是以秒为单位读取计算机内部时间 然后用srand()函数生成种子,在此种子下产生伪随机数,也就是只要种子不同,所产生的数据就不同,以此达到产生随机数的目的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-03-22 · 知道合伙人游戏行家
关注
展开全部
在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器。
不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。
下面是C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
【1】首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
【2】然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间);
【3】根据需要多次调用rand(),从而不间断地得到新的随机数;
【4】无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。
下面是C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
【1】首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
【2】然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间);
【3】根据需要多次调用rand(),从而不间断地得到新的随机数;
【4】无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询