有哪些随机数算法呢

作者&投稿:迪朋 (若有异议请与网页底部的电邮联系)
随机数常用算法有哪些~

我所知道的是用移位的办法做到的,被移位的数称为种子。

在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器。 有关如何产生随机数的理论有许多如果要详细地讨论,需要厚厚的一本书的篇幅。不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。 下面讲一讲在C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:”) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535; 2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间) 3) 根据需要多次调用rand(),从而不间断地得到新的随机数; 4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。 这个过程看起来很简单,问题是如果你每次调用srand()时都提供相同的种子值,那么,你将会得到相同的随机数序列,这时看到的现象是没有随机数,而每一次的数都是一样的了。例如,在以17为种子值调用srand()之后,在首次调用rand()时,得到随机数94。在第二次和第三次调用rand()时将分别得到26602和30017,这些数看上去是很随机的(尽管这只是一个很小的数据点集合),但是,在你再次以17为种子值调用srand()后,在对于rand()的前三次调用中,所得的返回值仍然是在对94,26602,30017,并且此后得到的返回值仍然是在对rand()的第一批调用中所得到的其余的返回值。因此只有再次给srand()提供一个随机的种子值,才能再次得到一个随机数。 下面的例子用一种简单而有效的方法来产生一个相当随机的“种子”值----当天的时间值:g#椋睿悖欤酰洌澹Γ欤簦唬螅簦洌椋铮瑁Γ纾簦弧。#椋睿悖欤酰洌澹Γ欤簦唬螅簦洌欤椋猓瑁Γ纾簦弧。#椋睿悖欤酰洌澹Γ欤簦唬螅螅Γ#矗罚唬簦穑澹螅瑁Γ纾簦弧。#椋睿悖欤酰洌澹Γ欤簦唬螅螅Γ#矗罚唬簦椋恚澹猓瑁Γ纾簦弧。觯铮椋洹。恚幔椋睿ǎ觯铮椋洌。。椋睿簟。椋弧。酰睿螅椋纾睿澹洹。椋睿簟。螅澹澹洌郑幔欤弧。螅簦颍酰悖簟。簦椋恚澹狻。簦椋恚澹拢酰妫弧。妫簦椋恚澹ǎΓ幔恚穑唬簦椋恚澹拢酰妫弧。螅澹澹洌郑幔欤剑ǎǎǎǎ酰睿螅椋纾睿澹洹。椋睿簦簦椋恚澹拢酰妫簦椋恚澹Γ幔恚穑唬埃疲疲疲疲。ǎ酰睿螅椋纾睿澹洹。椋睿簦簦椋恚澹拢酰妫恚椋欤欤椋簦恚蕖。ǎ酰睿螅椋纾睿澹洹。椋睿簦簦椋恚澹拢酰妫恚椋欤欤椋簦恚弧。螅颍幔睿洌ǎǎ酰睿螅椋纾睿澹洹。椋睿簦螅澹澹洌郑幔欤弧。妫铮颍ǎ椋剑埃唬椋Γ欤簦唬保埃唬椋。穑颍椋睿簦妫ǎΓ瘢酰铮簦唬ィ叮洌Γ#梗玻唬睿Γ瘢酰铮簦籦egjrand()); } 上面的程序先是调用_ftime()来检查当前时间yc并把它的值存入结构成员timeBuf.time中wae当前时间的值从1970年1月1日开始以秒计算aeh在调用了_ftime()之后在结构timeBuf的成员millitm中还存入了当前那一秒已经度过的毫秒数,但在DOS中这个数字实际上是以百分之一秒来计算的。然后,把毫秒数和秒数相加,再和毫秒数进行异或运算。当然也可以对这两个结构成员进行更多的计算,以控制se......余下全文>>

1、数值概率算法:用于数值问题的求解。所得到的解几乎都是近似解,近似解的精度
随着计算时间的增加而不断地提高。
2、拉斯维加斯算法(LasVegas):要么给出问题的正确答案,要么得不到答案。反复求解多次,可
使失效的概率任意小。
3、蒙特卡罗算法(MonteCarlo):总能得到问题的答案,偶然产生不正确的答案。重复运行,每一次
都进行随机选择,可使不正确答案的概率变得任意小。
4、舍伍德算法(Sherwood):很多具有很好的平均运行时间的确定性算法,在最坏的情况下性能很
坏。引入随机性加以改造,可以消除或减少一般情况和最坏情况的差别。

C语言:用函数
int rand( void );
要文件包含
#include <stdlib.h>
example:
srand( time(NULL) );
for( i = 0; i < 10; i++ )
printf( "Random number #%d: %d\n", i, rand() );
JAVA:
new一个random,使用random对象的nextInt(),nextInt(int n)方法,说明:
int nextInt()
返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
int nextInt(int n)
返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。


随机算法和确定性算法有什么区别?
而确定性算法主要应用于计算机图形学、网络安全、操作系统、编译器等方面。例如排序算法、搜索算法、各类优化算法等都属于确定性方法。3.效率 随机算法的效率通常比确定性算法高。因为随机数在一定程度上可以减小问题的规模,从而简化了解决方案。特别是在数据量大的情况下,随机算法能够有效地处理误差和噪音...

1到100的随机数
除了使用计算机算法生成随机数外,还可以使用统计学方法来生成。  例如,可以使用均匀分布或正态分布来生成随机数。在Python中,可以使用numpy库中的uniform或normal函数来生成随机数。例如,以下代码将生成一个符合正态分布的随机数:python num = np。  random。normal(50, 10)...

电脑如何产生随机数?
电脑产生的随机数称为伪随机数,是通过算法模拟的,看上去和随机数一样,实际上能算出来的数就是可以预见的数(对用户来说不可预见,对电脑则是可预见),不是真正的随机数。从一个大数“种子”开始重复某种迭代计算,通常是加减乘除加求余,种子可以取系统时间,因为用户不可能精确到微秒控制程序运行...

计算机产生随机数怎么操作?
演算法2:线性同余法 1)将种子设为X0, 2)用一个演算法X(n+1)=(a*X(n)+b) mod c产生X(n+1) 一般将c取得很大,可产生0到c-1之间的伪随机数 该演算法的一个缺点是会出现回圈。怎么用计算器产生随机数? 闭上眼睛,随便按,然后睁开眼睛。 ok,随机数产生了。 检视原帖>> ...

一到一百的随机数有哪些?
随机数的原理:所有的计算机产生的随机数都是伪随机数。伪随机数的意思是他们的产生是有规律的。伪随机数的生成 由 “种子+计算方法”决定,即:种子和算法一样时,得到的随机数序列是一样的;随机数是随机数序列中的一个。随机数种子默认来源于计算机主板的定时\/计数器在内存中的计数值。计算方法决定...

蒙特卡罗算法
而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法蒙特卡罗算法并不是一种算法的名称,而是对;蒙特卡罗MonteCarlo方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法这一方法源于美国在第二次世界大战进行研制原子弹的“曼哈顿计划”该计划的主持人之一数学家冯·诺伊曼用驰名世界...

计算机产生伪随机数的周期是多少?算法是什么
为追求真正的随机序列,人们曾采用很多种原始的物理方法用于生成一定范围内满足精度(位数)的均匀分布序列,其缺点在于:速度慢、效率低、需占用大量存储空间且不可重现等。为满足计算机模拟研究的需求,人们转而研究用算法生成模拟各种概率分布的伪随机序列。伪随机数是指用数学递推公式所产生的随机数。从...

微信红包的随机算法是怎样实现的?
‍‍‍‍1. 钱包钱数满足截尾正态随机数分布。大致为在截尾正态分布中取随机数,并用其求和数除以总价值,获得修正因子,再用修正因子乘上所有的随机数,得到红包价值。这种分布意味着:低于平均值的红包多,但是离平均值不远;高于平均值的红包少,但是远大于平均值的红包偏...

求从n个数中抽取随机数的c语言算法。
int a[9][8];定义数组包含math.h time.h头文件 运用rand()函数和系统时间用系统的时间做随机种子。对产生的随机数%100就能保证随机数都<100.最后加1,EQlxCg

一到五随机数是什么?
一到五随机数是1和4。产生随机数有多种不同的方法。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。一到五随机数是1和4。用法:随机数在密码学中非常重要,保密通信中大量运用的会话密钥的生成即需要真随机数的参与。如果一个随机数生成算法是有缺陷的,那么会话密钥可以直接...

诸城市17631244182: 求随机数常用算法 -
党庙辛伐: 一般随机数都不是完全随机的,你在一个程序里两次调用系统的随机函数,你会发现是一样的! 给你个思路,用系统函数得到当前进程的开始时间,然后处理这个时间,算法想怎么写就怎么写,因为每次程序运行时间的不一样的,所以得到的随机数就“随机”了,很多随机函数都是这么做的!

诸城市17631244182: 随机数的计算公式是什么? -
党庙辛伐: 为追求真正的随机序列,人们曾采用很多种原始的物理方法用于生成一定范围内满足精度(位数)的均匀分布序列,其缺点在于:速度慢、效率低、需占用大量存储空间且不可重现等.为满足计算机模拟研究的需求,人们转而研究用算法生成模...

诸城市17631244182: 随机数的计算方法 -
党庙辛伐: 定时计数1到9,在不知道什么时刻读取,就可以得到1-9的随机数 或者用rand函数 在或者把随机数表写上去,然后读

诸城市17631244182: 求各种产生随机数的算法 -
党庙辛伐: 多的很呀!别撤消呀,千万!不过几乎都是伪随机数.随机序列的算法 找到了两个算法, 第一个很简单, 但可惜不是随机的, 第二个是典型的伪随机数算法, 可惜要用到2的几百万次方这样巨大的整数, 真痛苦 要是有UNIX上计算密码的源代...

诸城市17631244182: 计算器如何产生随机数? -
党庙辛伐: 一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数,下面介绍两种方法: 一般种子可以以当前的系统时间,这是完全随机的 . 算法1:平方取中法. 1)将种子设为X0,并mod ...

诸城市17631244182: C++ 随机数算法 -
党庙辛伐: a1=rand(1-100) a2=a1+rand(5-50).....

诸城市17631244182: java里面产生1 - 100随机数都有哪些方法? -
党庙辛伐: public class Test { public static void main(String[] args) { int i = (int)(Math.random()*100); System.out.println(i); } }

诸城市17631244182: 有没有求随机数的方法. -
党庙辛伐: java中 Math.random()就是随机数的生成

诸城市17631244182: c语言中,有多少中生成随机数的方法,哪种最好? -
党庙辛伐: 1.可能用到的函数:randomize(),srand(),rand(),random().◎void randomize(void)通过time函数来得到一个随机数,此数将成为起始发生数据(stdlib.h | time.h)◎void srand(unsigned number)该函数和rand函数配合使用,产生随机...

诸城市17631244182: 关于随机数法和随机数表的全部 -
党庙辛伐: 随机数是专门的随机试验的结果. 在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等. 产生随机数有多种不...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网