matlab生成随机数的rand、randi和randn三种形式

本文详细介绍了Matlab中三种生成随机数的库函数:rand(…)用于生成0~1之间的均匀分布随机数;randi(…)用于生成指定范围内的整数型均匀分布随机数;randn(…)用于生成均值为0、方差为1的正态分布随机数。此外还介绍了如何通过rng函数稳定地重启随机数分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章已经生成可运行项目,

  matlab中关于随机数的产生有3种库函数,下面我们来看看它们的形式:
  1、rand(…)
  它是生成0~1之间(开环,不包含0和1两个数)均匀分布的伪随机数,也就是无穷次试验其中每个数产生的概率是一样的。
  它的函数格式如下:

 R = rand(N)              % 生成N×N的矩阵随机数,其中每个元素位于0~1之间
 R = rand([M,N,P,...])    % 生成M×N×P×...的矩阵随机数
 R = rand(M,N,P,...)      % 同上,中括号不是必须
 R = rand(..., CLASSNAME) % 生成CLASSNAME类型的随机数,如 'double' or 'single' 

  例如生成double类型的5×3均匀分布的0到1间随机数:

R = rand(5,3,'double');

  同理,我们想要生成100个位于[a,b]间的数据可表示为:

R = a + (b-a).*rand(100,1);

  2、randi(…)
  randi(N) 是生成(0,N]间均匀分布的伪随机数,并且数都是整数,所以每个数是位于1到N之间。它的表达形式有以下几种:

R = randi(iMax)            % 生成1:iMax之间的均匀分布随机数
R = randi(iMax,m,n)        % 生成m×n的1:iMax之间的均匀分布随机数
R = randi([iMin,iMax],m,n) % 生成m×n的iMin:iMax之间的均匀分布随机数

  例如:

R1 = randi(10,5,1);      % 生成5×11:10之间随机数
R2 = randi([10,20],2,3); % 生成2×31020之间随机数

  3、randn(…)
  有时候我们希望生成的随机数是呈现正态分布的,而不是随机分布,这时候我们就需要使用randn函数了。它生成的随机数整体概率为正态分布,均值为0,方差为1。也就是说生成的数中出现0的概率最大,而越往无穷或者负无穷概率越小,但是出现的随机数可能为所有实数,只不过出现的概率不同。它的格式如下:

R = randn(N)   % 生成N×N个正态分布的随机数
R = randn(M,N) % 生成M×N个正态分布的随机数

  例如:

R = randi(3);      % 生成3×3的正态分布的随机数

  4、稳定的重启分布rng
  这里我们来看一下如何让每次程序运行生成的随机数都一样,主要借助的是rang函数,格式如下:

rng('default');
R = rand(1,5); % 每次程序运行生成恒定的1×5随机数

  此外还有生成同样分布的表达方式:

s = rng;
R1 = rand(1,5);
rng(s);
R2 = rand(1,5); % R1和R2随机数一样

  个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
  转载请注明出处:http://blog.youkuaiyun.com/fx677588/article/details/72811673

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值