怎样生成有一定相关度的随机数

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:21:48
已有一个能生成0~1之间均匀分布的随机数的程序
有没有什么算法能通过它生成两列有一定相关度的随机数列{Ai}{Bi}(如A1较大则B1也可能取一个较大值)
但{Ai}{Bi}仍分别满足在0~1间均匀分布
回1L5L,准确的说是Ai与Bi的取值有一定相关,但对于Ai数列和Bi数列各自分别‘看似’均匀分布随机数列,即Ai+1与Ai的取值无关。
回2L,我当然认同计算机只能生成伪随机数这一点,而且对计算机如何实现的生成伪随机数的原理也不存在疑问,你说“可以结合它和随机函数,再用一个合理的算法来构造一个你所需要的函数。”我所想知道的正是这个“合理的算法”
回3L6L,你们的做法太过随意(arbitrary),并且这样得到的两数列Ai与Bi的相关度大小不可调节
回4L,你说的这个办法我想过,但是这样得到的随机数列Bi不再满足0~1之间均匀分布的条件,道理很简单,因为两个相互独立的均匀分布随机数的和满足正态分布而非均匀分布

这看似简单,实际上很难。

我能想到的唯一简单可行的办法,就是先生成一对相关的正态分布的变量,然后将两个正态分布转化为均匀分布。

楼上说得没错,计算机只能产生伪随机数;
你仔细想想,就是这个自然界也没有绝对意义上的随机现象;
任何一种自然现象都是各种因素共同作用的结果,
只是这些因素太多太复杂罢了。
当超过人们所需要的程度或可控范围,
人们就给此现象定性为随机,这种界线是模糊的;
要看实际需要来定。

看你对伪随机数的伪的程度要求有多高了!
很多程序里有伪随机函数啊,大多是产生0~1之间的数,
只是产生的小数的精度有所不同,也可以设置的。
有一个可以产生各不相同的伪随机数母函数,
即是时间里的时刻,每一时刻的时间值都是不一样的,
我称之为伪随机数时间戳。
可以结合它和随机函数,
再用一个合理的算法来构造一个你所需要的函数。

您的问题我也不懂,纯粹调侃的话,楼主别生气!

Bi=4/5 Ai+1/5 Ci
Ci也是 0-1的随即数
这个bi不就和Ai相关了么,而且Ai影响教大
随机数产生原理

通常有两种方法

1.平方取中法

1)从一个n位数x开始,称为种子

2)将它平方得到一个2n位数(必要时前面加0)

3)取中间的n位数做为下一个随机数

这种方法有一个缺点就是产生的随机数会趋向0

2.线性同余法

选择三个整数a,b,c,给定初始种子X(0)

按下列规则生成数列

X(n+1)=( a * X(n) + b )mod(c)

这种方式产生的随机数会出现循环

但是只要我们把c取得足够大就可以保证不会在我们运算中出现循环

很多计算机都是利用这个原理产生随机数的

只是c值取得很大,c=2^31

A1较大则B1也取一个较