关于matlab生成随机数 matlab生成01随机数

关于matlab生成随机数 matlab生成01随机数



一,matlab中生成随机数主要有三个函数:rand, randn,randi

1,rand 生成均匀分布的伪随机数。分布在(0~1)之间

主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数

rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single'

rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数

2,randn 生成标准正态分布的伪随机数(均值为0,方差为1)

主要语法:和上面一样

3, randi 生成均匀分布的伪随机整数

主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数

randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵

r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵

示例验证:

均值分布

概率分布图:

y=rand(1,3000000);
hist(y,2000);

散点图:

y=rand(1,3000000);
plot(y)


正态分布

概率分布图:

y=randn(1,3000000);
hist(y,2000);


散点图:

y=randn(1,3000000);
plot(y);


二,关于随机种子,伪随机数的重复生成

正常情况下每次调用相同指令例如rand生成的伪随机数是不同的,

例如:

rand(1,3)

rand(1,3)

matlab的输出为:

ans =
0.1390434825360490.7340076333626350.194791464843949
ans =
0.6022047663242150.9379237450194220.149285414707192

如何使两个语句生成的随机数相等呢?

Matlab帮助中的下面章节有所叙述:

Managing theDefault Stream

管理默认(缺省)流

rand, randn, and randidraw random numbers from anunderlying random number stream, called the default stream.The @RandStream class allows you to get a handle to the default streamand control random number generation.

rand,randn,和randi 从一个基础的随机数流中得到随机数,叫做默认流。你可以通过@RandStream 类得到默认流的句柄从而控制随机数的生成。

Get a handle to the default stream asfollows:

以下为得到默认流句柄的代码:

defaultStream=RandStream.getDefaultStreamdefaultStream = mt19937ar random stream (current default)             Seed: 0         RandnAlg: Ziggurat

Return the properties of the stream object with the get method:
用get方法返回流对象属性:
get(defaultStream)             Type: 'mt19937ar'       NumStreams: 1      StreamIndex: 1        Substream: 1             Seed: 0            State: [625x1 uint32]         RandnAlg: 'Ziggurat'       Antithetic: 0    FullPrecision: 1

The State property is the internal state of the generator. You can save the State of defaultStream.
state属性是发生器的内部状态,你可以保存默认流的状态:
myState=defaultStream.State;

Using myState, you can restore the state of defaultStream and reproduce previous results.
利用myState你可以恢复默认流状态重新生成前面的结果:
myState=defaultStream.State;A=rand(1,100);defaultStream.State=myState;B=rand(1,100);isequal(A,B)ans =     1
你也可以直接使用@RandStream 类的reset静态方法重置种子状态来获取相同的随机生成序列,下面是示例代码:

stream =RandStream.getDefaultStream;%获取默认的随机种子(暂时这么叫,帮助有详细解释)
reset(stream);%重置
rand(stream,1,3)
reset(stream);%重置
rand(stream,1,3)

matlab的输出为:

ans =
0.8147236863931790.9057919370756190.126986816293506
ans =
0.8147236863931790.9057919370756190.126986816293506

可以看出生成的随机码是相等的,这样可以用于重复实验上来

  

爱华网本文地址 » http://www.413yy.cn/a/25101018/374826.html

更多阅读

关于Matlab中M文件导出EXE可执行文件 matlab的m文件生成exe

相信很多用Matlbab开发的同学们都对Matlab强大的工具包所吸引,但是并不是所以环境都支持对M文件运行,在没有安装Matlab的电脑上我们该如何M文件进行运算呢。首选当然是把M文件导出成一个可在WINDOWS上运行的EXE文件了。下面开始说说如

怎样用excel生成规定范围内的随机数 生成指定范围的随机数

怎样用excel生成规定范围内的随机数——简介随机数在学术研究、计算机应用等各个方面都有广泛应用,在日常生活中也经常会遇到该如何生成随机数等问题,现就如何用excel生成规定范围内的随机数方法做一个简单介绍。怎样用excel生成规定

matlab中随机数的问题 matlab产生随机数

norm(a) 一个向量的长度,也就是二阶范数randn(2,20) 生成均值为0,方差为1的正态分布scatter(a(1,:),a(2,:)) 画散点图关键问题不是用法而是意义,rand是0-1的均匀分布,randn是均值为0方差为1的正态分布用法自己help rand或者help randn一

php生成16位随机数 ios生成16位随机数

一个php生成16位随机数的代码(两种方法)一个php生成16位随机数的代码,php生成随机数的二种方法。方法1<?php$a = mt_rand(10000000,99999999);$b = mt_rand(10000000,99999999);echo $a.$b;方法2:<?php

js生成随机数 js指定位数的随机数

randomfunctiondate1.使用内置函数方法:Math.random(); //该方法产生一个0到1之间的浮点数。延伸:Math.floor(Math.random()*10+1); //生成1-10的随机数Math.floor(Math.random()*10);//生成0-9的随机数函数方法:

声明:《关于matlab生成随机数 matlab生成01随机数》为网友香菇头少年分享!如侵犯到您的合法权益请联系我们删除