24小时热门版块排行榜    

查看: 319  |  回复: 3
当前主题已经存档。

luckid913

新虫 (初入文坛)

[交流] matlab 产生均匀随机数

要用matlab产生一组0到1之间的均匀随机数。要求随机数是以计算机当前的时间作为种子的。如何实现?请各位指点,谢谢!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

safiml

金虫 (小有名气)

★ ★ ★ ★ ★ ★
luckid913(金币+6,VIP+0):3Q for your help!! 7-10 18:54
转自http://hi.baidu.com/yilinghl/blo ... 8c4bfa3c7a18326acb8


从这儿看到的,rand()这个函数就是产生0~1的均匀分布的随机数,关键是以机器时间为种子,据这里说是rand()中引入clock参数即可,你看看吧

我贴一下吧:

rand产生的是0到1(不包括1)的随机数.

matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数.

matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的.

1.多次运行,生成相同的随机数方法:


用rand('state',S)设定种子
S为35阶向量,最简单的设为0就好

例:

rand('state',0);rand(10)

2. 任何生成相同的随机数方法:

试着产生和时间相关的随机数,种子与当前时间有关.

rand('state',sum(100*clock))

即:

rand('state',sum(100*clock)) ;rand(10)

只要执行rand('state',sum(100*clock)) ;的当前计算机时间不现,生成的随机值就不现.

也就是如果时间相同,生成的随机数还是会相同.

在你计算机速度足够快的情况下,试运行一下:

rand('state',sum(100*clock));A=rand(5,5);rand('state',sum(100*clock));B=rand(5,5);

A和B是相同.

所以建议再增加一个随机变量,变成:

rand('state',sum(100*clock)*rand(1));



%

据说matlab 的rand 函数还存在其它的根本性的问题,似乎是非随机性问题.

没具体研究及讨论,验证过,不感多言.

有兴趣的可以查阅:

<>


Petr Savicky
Institute of Computer Science
Academy of Sciences of CR
Czech Republic
savicky@cs.cas.cz
September 16, 2006
Abstract
The default random number generator in Matlab versions between 5 and at least
7.3 (R2006b) has a strong dependence between the numbers zi+1, zi+16, zi+28 in the
generated sequence. In particular, there is no index i such that the inequalities
zi+1 < 1/4, 1/4 zi+16 < 1/2, and 1/2 zi+28 are satisfied simultaneously. This
fact is proved as a consequence of the recurrence relation defining the generator. A
random sequence satisfies the inequalities with probability 1/32. Another example
demonstrating the dependence is a simple function f with values −1 and 1, such that
the correlation between f(zi+1, zi+16) and sign(zi+28 − 1/2) is at least 0.416, while it
should be zero.
A simple distribution on three variables that closely approximates the joint
distribution of zi+1, zi+16, zi+28 is described. The region of zero density in the
approximating distribution has volume 4/21 in the three dimensional unit cube. For
every integer 1 k 10, there is a parallelepiped with edges 1/2k+1, 1/2k and 1/2k+1,
where the density of the distribution is 2k. Numerical simulation confirms that the
distribution of the original generator matches the approximation within small random
error corresponding to the sample size.

[ Last edited by safiml on 2009-7-10 at 16:41 ]
2楼2009-07-10 16:37:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
3楼2009-07-10 16:38:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxq_

金虫 (著名写手)

额的金币啊

顶楼上的
4楼2009-07-10 17:12:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 luckid913 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见