范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

MATLAB各种随机数生成函数实例加程序1

  MATLAB具有自带的函数,基于各种算法而产生的随机数。今天主要是以实例讲解MATLAB的随机数生成函数rand函数、rng函数、randi函数、randn函数。
  1.rand函数  rand(m,n) 含义:生成0-1间均匀分布的随机矩阵(m行,n列),如果m=n,可简写为rand(m) 语法 X = rand X = rand(n) X = rand(sz1,...,szN) X = rand(sz) X = rand(___,typename) X = rand(___,"like",p) 说明 X = rand 返回一个在区间 (0,1) 内均匀分布的随机数。 X = rand(n) 返回一个 n×n 的随机数矩阵。 X = rand(sz1,...,szN) 返回由随机数组成的 sz1×...×szN 数组,其中  sz1,...,szN 指示每个维度的大小。例如:rand(3,4) 返回一个 3×4 的 矩阵。 X = rand(sz) 返回由随机数组成的数组,其中大小向量 sz 指定 size(X)。 例如:rand([3 4]) 返回一个 3×4 的矩阵。 X = rand(___,typename) 返回由 typename 数据类型的随机数组成的数组。 typename 输入可以是 "single" 或 "double"。 X = rand(___,"like",p) 返回由 p 等随机数组成的数组;也就是与 p 同一对象类型。
  实例1
  程序 clc; clear all; close all; %生成一个由介于 0 和 1 之间的均匀分布的随机数组成的 5×5 矩阵。 r= rand(5) % a+(b-a)*rand(m,n)  含义:生成a-b间均匀分布的随机矩阵(m行,n列),如果m=n,则可简写。 r1= rand(5,5) %生成一个由区间 (-5,5) 内均匀分布的数字组成的 10×1 列向量。 r2 = -5 + (5+5)*rand(10,1) r3 = rand(100000,1); figure; h = histogram(r3);%绘图,生成随机数的分布 histogram函数绘制直方图 %由随机数组成的三维数组 X = rand([3,2,3]) %指定随机数的数据类型 r = rand(1,4,"single") class(r) %根据现有数组克隆大小 创建一个由正态分布的随机数组成并且大小与现有数组相同的矩阵。 A = [3 2; -2 1]; sz = size(A); X = rand(sz) %它是一种将前两行代码合并成一行的常见模式:X = rand(size(A)); %根据现有数组克隆大小和数据类型 创建一个由单精度随机数组成的 2×2 矩阵。 p = single([3 2; -2 1]); %创建一个与 p 具有相同大小和数据类型的由随机数组成的数组。 X = rand(size(p),"like",p) class(X) %随机复数 %生成一个实部和虚部位于区间 (0,1) 内的随机复数。 a = rand + 1i*rand
  运行结果 r =     0.8913    0.9786    0.4317    0.3728    0.5988     0.2092    0.8117    0.9400    0.0057    0.6038     0.1853    0.1719    0.8176    0.2524    0.1051     0.1084    0.8162    0.3361    0.7957    0.3819     0.2197    0.2741    0.1754    0.0153    0.0365 r1 =     0.8904    0.7425    0.5447    0.9750    0.3402     0.9809    0.6302    0.7691    0.8849    0.1781     0.0599    0.5818    0.2507    0.3595    0.2377     0.8905    0.0204    0.2859    0.5989    0.0449     0.5769    0.2100    0.8524    0.3548    0.5054 r2 =      -1.2375     0.9281     1.2994    -3.5740     4.3384     4.4638     1.0230    -1.1223    -1.3681    -2.9565 X(:,:,1) =     0.0000    0.9110     0.7811    0.1809     0.4645    0.2818 X(:,:,2) =     0.2833    0.4759     0.6432    0.1795     0.9514    0.8274 X(:,:,3) =     0.3584    0.6210     0.7421    0.4394     0.2962    0.0470 r =   1×4 single 行向量     0.9315    0.4811    0.0270    0.1418 ans =     "single" X =     0.3819    0.8302     0.0854    0.0520 X =   2×2 single 矩阵     0.8556    0.2008     0.7027    0.3705 ans =     "single" a =    0.5051 + 0.4904i
  因为每次随机数产生的值皆不同,如果因为验证算式需要确定所使用的随机数值是相同的,可以利用rng函数设置seed这个选项,用以设定使用计算随机数产生器的起始值。
  2.rng函数   rng 函数作用:rng 函数用于控制随机数生成函数(rand、randi、randn)  生成随机数。  语法 rng(seed)   % 使用非负整数 seed 为随机数生成函数(rand、randi、 randn)提供种子。 rng("shuffle")  % 根据当前时间为随机数生成函数提供种子 rng(seed,generator) % 在上述语法基础上指定随机数生成函数(rand、 randi、randn)的随机数生成类型 rng("shuffle",generator)    % 在上述语法基础上指定随机数生成函数 (rand、randi、randn)的随机数生成类型 rng("default")  % 将随机数生成函数(rand、randi、randn)的设置 重置为默认值(seed = 0,generator = "simdTwister") scurr = rng % 返回随即上生成函数(rand、randi、randn)的当前设置。 rng(s)  % 将随机数生成函数设置还原回变量 s 指定的设置(s 为先前 使用 s = rng 捕获的设置)。 sprev = rng(___)    % 在上述语法的基础上,先返回随机数生成函数的 当前设置,再进行设置的修改。generator 的可选值如下表
  generator 取值
  说明
  ‘twister’
  Mersenne Twister
  ‘simdTwister’
  面向 SIMD 的快速 Mersenne Twister 算法
  ‘combRecursive’
  合并的多个递归
  ‘multFibonacci’
  乘法滞后 Fibonacci
  ‘v5uniform’
  传统 MatLab 5.0 均匀生成函数
  ‘v5normal’
  传统 MatLab 5.0 正常生成函数
  ‘v4’
  传统 MatLab 4.0 生成函数
  实例2
  程序 clc; clear all; close all; % rng()设置种子,这样每次生成的伪随机序列都是完全一样的。  rng("default") % 将随机数生成函数(rand、randi、randn)的设置重置为默认值(seed = 0,generator = "simdTwister") seed = 100; rng(seed); r = rand(1,5) %重置随机数生成器 %保存随机数生成器的当前状态并创建一个由随机数组成的 1×5 向量。 s = rng; r = rand(1,5) %将随机数生成器的状态恢复为 s,然后创建一个由随机数组成的新 1×5 向量。值与之前相同。 rng(s); r1 = rand(1,5)
  运行结果 r =     0.5434    0.2784    0.4245    0.8448    0.0047 r =     0.1216    0.6707    0.8259    0.1367    0.5751 r1 =     0.1216    0.6707    0.8259    0.1367    0.5751 >>
  3.randi函数  randi 均匀分布的伪随机整数 语法 X = randi(imax) X = randi(imax,n) X = randi(imax,sz1,...,szN) X = randi(imax,sz) X = randi(imax,classname) X = randi(imax,n,classname) X = randi(imax,sz1,...,szN,classname) X = randi(imax,sz,classname) X = randi(imax,"like",p) X = randi(imax,n,"like",p) X = randi(imax,sz1,...,szN,"like",p) X = randi(imax,sz,"like",p) X = randi([imin,imax],___) 说明 X = randi(imax) 返回一个介于 1 和 imax 之间的伪随机整数标量。 X = randi(imax,n) 返回 n×n 矩阵,其中包含从区间 [1,imax] 的均匀离 散分布中得到的伪随机整数。 X = randi(imax,sz1,...,szN) 返回 sz1×...×szN 数组,其中 sz1,..., szN 指示每个维度的大小。例如,randi(10,3,4) 返回一个由介于 1 和 10 之间的伪随机整数组成的 3×4 数组。 X = randi(imax,sz) 返回一个数组,其中大小向量 sz 定义 size(X)。 例如,randi(10,[3,4]) 返回一个由介于 1 和 10 之间的伪随机整数组成 的 3×4 数组。 X = randi(imax,classname) 返回一个伪随机整数,其中 classname 指定 数据类型。classname 可以为 "single"、"double"、"int8"、"uint8"、 "int16"、"uint16"、"int32" 或 "uint32"。 X = randi(imax,n,classname) 返回数据类型为 classname 的 n×n 数组。 X = randi(imax,sz1,...,szN,classname) 返回数据类型为 classname  的 sz1×...×szN 数组。 X = randi(imax,sz,classname) 返回一个数组,其中大小向量 sz 定义  size(X),classname 定义 class(X)。 X = randi(imax,"like",p) 返回一个类如 p 的伪随机整数;即,具有 相同的数据类型(类)。 X = randi(imax,n,"like",p) 返回一个类如 p 的 n×n 数组。 X = randi(imax,sz1,...,szN,"like",p) 返回一个类如 p 的 sz1×... ×szN 数组。 X = randi(imax,sz,"like",p) 返回一个类如 p 的数组,其中大小向量  sz 定义 size(X)。 X = randi([imin,imax],___) 使用以上任何语法返回一个数组,其中包含 从区间 [imin,imax] 的均匀离散分布中得到的整数。
  实例3
  程序 clc; clear all; close all; % 由随机整数组成的方阵 % 生成一个由介于 1 和 10 之间的随机整数组成的 5×5 矩阵。 % randi 的第一个输入指示采样区间中的最大整数(采样区间中的最小整数为 1)。 r = randi(10,5) %控制随机数生成 %保存随机数生成器的当前状态并创建一个由随机整数组成的 1×5 向量。 s = rng; r = randi(10,1,5) %将随机数生成器的状态恢复为 s,然后创建一个由随机整数组成的新 1×5 向量。值与之前相同。 rng(s); r1 = randi(10,1,5) r2 = randi([1 100],5,5) %由随机整数组成的三维数组 X = randi(500,[3,2,3]) %其他数据类型的随机整数 %创建一个由其元素为 int16 类型的随机数组成的 1×4 向量。 r = randi(100,1,4,"int16") class(r) %现有数组定义的大小 %创建一个由介于 1 和 10 之间的均匀分布的随机整数组成并且大小与现有数组相同的矩阵。 A = [3 2; -2 1]; sz = size(A); X = randi(10,sz)%它是一种将前两行代码合并成一行的常见模式:X = randi(10,size(A)); %现有数组定义的大小和数值数据类型 %创建一个由 8 位有符号整数组成的 2×2 矩阵。 p = int8([3 2; -2 1]); %创建一个与 p 具有相同大小和数据类型的由随机整数组成的数组。 X = randi(10,size(p),"like",p) class(X)
  运行结果 r =      1     7     5     1    10      8     8     7     4     9     10    10     5    10     3     10     2     9     1     6      5     5     9     5     5 r =      6     9     6     5     4 r1 =      6     9     6     5     4 r2 =     27    96    22     3    17     55    69    42    33    63      9    49    99     8    44     64    49     3     7    84     80    97    71    12    24 X(:,:,1) =     96   280    356   353    430   303 X(:,:,2) =    280   425    431   128    460   439 X(:,:,3) =    218    96    365   354    207   121 r =   1×4 int16 行向量    86   83   53   39 ans =     "int16" X =      6     9      2    10 X =   2×2 int8 矩阵    8   9    3   9 ans =     "int8" >>
  4.randn函数  randn randn ():生成(0,1)区间上正态分布的随机变量 正态分布的随机数 语法 X = randn X = randn(n) X = randn(sz1,...,szN) X = randn(sz) X = randn(___,typename) X = randn(___,"like",p) 说明 X = randn 返回一个从标准正态分布中得到的随机标量。 X = randn(n) 返回由正态分布的随机数组成的 n×n 矩阵。 X = randn(sz1,...,szN) 返回由随机数组成的 sz1×...×szN 数组, 其中 sz1,...,szN 指示每个维度的大小。例如:randn(3,4) 返回一个  3×4 的矩阵。 X = randn(sz) 返回由随机数组成的数组,其中大小向量 sz 定义  size(X)。例如:randn([3 4]) 返回一个 3×4 的矩阵。 X = randn(___,typename) 返回由 typename 数据类型的随机数组成的 数组。typename 输入可以是 "single" 或 "double"。 X = randn(___,"like",p) 返回由 p 等随机数组成的数组;也就是与 p  同一对象类型。可以指定 typename 或 "like",但不能同时指定两者。
  实例4
  程序 clc; clear all; close all; % 生成一个由正态分布的随机数组成的 5×5 矩阵。 r = randn(5) %生成 10,000 个随机数并创建直方图。histogram 函数自动选择合适的 bin 数量, %以便涵盖 x 中的值范围并显示基本分布的形状。 figure(1); x = randn(10000,1); h = histogram(x) figure(2) x = randn(2000,1); y = 1 + randn(5000,1); h1 = histogram(x); hold on h2 = histogram(y); %二元正态随机数 mu = [1 2]; sigma = [1 0.5; 0.5 2]; R = chol(sigma); z = repmat(mu,10,1) + randn(10,2)*R %随机复数 %生成一个具有正态分布的实部和虚部的随机复数。 a = randn + 1i*randn %重置随机数生成器 %保存随机数生成器的当前状态并创建一个由随机数组成的 1×5 向量。 s = rng; r = randn(1,5) %将随机数生成器的状态恢复为 s,然后创建一个由随机数组成的新 1×5 向量。值与之前相同。 rng(s); r1 = randn(1,5) %由随机数组成的三维数组 X = randn([3,2,3]) %指定随机数的数据类型。 r = randn(1,4,"single") class(r) % 根据现有数组克隆大小 %创建一个由正态分布的随机数组成并且大小与现有数组相同的矩阵。 A = [3 2; -2 1]; X = randn(size(A)); %根据现有数组克隆大小和数据类型 %创建一个由单精度随机数组成的 2×2 矩阵。 p = single([3 2; -2 1]); % 创建一个与 p 具有相同大小和数据类型的由随机数组成的数组。 X = randn(size(p),"like",p) class(X)
  运行结果 r =    -0.7969    0.0295    0.0818    0.2209   -1.0142     2.1834   -0.6164    0.2707   -1.2882    0.4781     1.0997   -1.1259    1.4013    0.4066   -0.0311     1.5010    0.6625    0.8711    0.1092    0.3515     0.2350    1.2136    1.2808    0.8662    2.1003 h =    Histogram - 属性:              Data: [10000×1 double]            Values: [1×37 double]           NumBins: 37          BinEdges: [1×38 double]          BinWidth: 0.2000         BinLimits: [-3.6000 3.8000]     Normalization: "count"         FaceColor: "auto"         EdgeColor: [0 0 0]   显示 所有属性 z =     0.1661    1.8710    -0.3255    0.4274     1.8562    4.2863     3.2530    2.9635    -0.3674    1.4188     1.9013    2.8332     0.3292    1.4980     1.6812    0.9640     1.3901    1.0174     1.8215   -0.6754 a =   -0.3452 - 0.6610i r =    -0.0283   -0.3600   -1.1009    0.4352    1.2253 r1 =    -0.0283   -0.3600   -1.1009    0.4352    1.2253 X(:,:,1) =     0.0578    0.6148     0.5797    1.7740    -0.8487    0.4496 X(:,:,2) =    -0.1585   -0.8475    -0.2104    0.9195     2.5157   -1.0433 X(:,:,3) =     0.8969   -0.3169    -0.4588    0.5777     0.0367   -0.7604 r =   1×4 single 行向量     1.8574    0.4704   -0.2384   -0.2513 ans =     "single" X =   2×2 single 矩阵    -0.3357   -0.0307     1.0911   -0.9535 ans =     "single" >>
  5.其他MATLAB的随机数生成函数  betarnd 贝塔分布的随机数生成器     binornd 二项分布的随机数生成器     chi2rnd 卡方分布的随机数生成器     exprnd 指数分布的随机数生成器     frnd f分布的随机数生成器     gamrnd 伽玛分布的随机数生成器     geornd 几何分布的随机数生成器     hygernd 超几何分布的随机数生成器     lognrnd 对数正态分布的随机数生成器     nbinrnd 负二项分布的随机数生成器     ncfrnd 非中心f分布的随机数生成器     nctrnd 非中心t分布的随机数生成器     ncx2rnd 非中心卡方分布的随机数生成器     normrnd 正态(高斯)分布的随机数生成器     poissrnd 泊松分布的随机数生成器     raylrnd 瑞利分布的随机数生成器     trnd 学生氏t分布的随机数生成器     unidrnd 离散均匀分布的随机数生成器     unifrnd 连续均匀分布的随机数生成器     weibrnd 威布尔分布的随机数生成器
  6.参考内容
  [1] 腾讯云开发者社区的作者hotarugali的文章《MatLab函数rand、randi、randn、rng》,文章链接为:
  https://cloud.tencent.com/developer/article/1948537
  [2] 简书作者小白日常笔记的文章《MATLAB的简单随机生成函数》,文章链接为:https://www.jianshu.com/p/825ddb8e59ec
  [3] 大数据分析的作者cdadata的文章《如何用matlab生成随机数函数_matlab随机数生成函数》,文章链接为:
  http://www.cdadata.com/8046
  本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
  作 者 | 郭志龙
  编 辑 | 郭志龙
  校 对 | 郭志龙

英国撕毁合同,拟在核电项目中剔除中企,或有3个原因,中方回应在美国的对华施压战略中,英国一直是最为积极的响应者,先后以所谓的国家安全为由,对华为5G下手,并审查中资芯片收购案,如今又想在核电项目上剔除中企。据英国卫报报道,约翰逊政府已决定收斯里兰卡向英国学习,搞起了四天工作制,背后原因太心酸据环球网援引CNN报道,斯里兰卡政府宣布对公务员实行四天工作制,像英国一样搞起了一周三休。只不过,英国放假是为了缓解员工压力,斯里兰卡是为了留出时间给公务员回家种地。近日,斯里兰卡德国独立记者因报道乌克兰当局轰炸顿巴斯平民,恐被德政府判刑3年(观察者网讯)据俄媒今日俄罗斯(RT)当地时间16日报道,德国独立记者阿丽娜利普(AlinaLipp)近日通过视频表示,她因报道了乌克兰当局轰炸顿巴斯平民的新闻,而被德国政府提起刑美国施压成功,英国欲打劫中企股权并踢出项目,汪文斌已回应据观察者网最新消息,日前英国政府决定收购中广核集团,在英国赛兹韦尔核电站项目的20股权,对此中国外交部发言人汪文斌表示,要求英国能够为中国企业提供一个没有歧视公平良好的商营环境。很印度抢购俄罗斯石油,美国不开心,为什么我们不能购买便宜的石油俄乌冲突开始之后,国际油价持续高烧不退,印度开始疯狂购买俄罗斯的低价石油,中国为什么无动于衷呢?我们能不能去抄底俄罗斯石油呢?西方国家对俄罗斯的制裁可不一般,其中美国人叫得最欢,受承泽观察平台经济40评之十四胡佳胤平台跨界竞争给我们带来了什么?中新经纬6月16日电题平台跨界竞争给我们带来了什么?作者胡佳胤北京大学国家发展研究院助理教授导语跨界竞争模糊了市场边界,也激发了市场活力。大科技平台间的跨界竞争可以对彼此形成制衡,年度四大悬疑爽剧齐聚同一平台!优酷用户这个会员太值了炎炎夏日,宅在家里的你,需要什么让你浑身一凉呢?可乐?冰淇淋?还是一部悬疑剧?如果是我,那我会选择回廊亭庭外胆小鬼立功等优秀的悬疑片,让我的内心又爽快又凉快!而看到这四部年度悬疑剧美方这是不是一种心虚的表现?我们始终站在和平一边,站在公道一边。资料图美国国务院外景(图自视觉中国)中国外交部发言人汪文斌16日在例行记者会上批驳美国国务院发言人指称同俄罗斯站在一起的国家将不可避免站在历史错支付宝公益平台持续探索平台共建成立共建委员会升级开放计划6月16日,观察者网从支付宝公益平台生态伙伴大会上了解到,支付宝公益平台已发起成立支付宝公益平台共建委员会,并将进一步升级开放计划从平台规范共建自有产品开放公益数据研究数字工具共享著名演员刘丹,去世22年后,萧剑已结婚生子,母亲的坚持让人泪目关注我,每天带来名人感动的故事!刘丹,是国内知名女星,那脱俗又充满异域风情的美貌让大众惊艳,更是凭借电视剧还珠格格的香妃一举成名,哀婉凄美忧郁的影子风靡一时。天生丽质的刘丹,有着精张雨绮为唐山打人事件发声,因言辞过激遭到网暴,已处于失联状态6月16日,据不少影迷在网上爆料称,知名女演员张雨绮在上周为唐山烧烤店打人事件发声后,就一直处于失联状态,不仅社交账号停更了,也没有到粉丝群与影迷们互动交流,像这种情况在以前是不会
英雄联盟为什么没有人敢黑faker?想黑Faker的人或许连理由都找不到,用高调做事低调做人这句话来形容Faker再合适不过了。反观那些口口声声不忘初心的职业选手,到最后有几个能如Faker这般始终如一?从S3到S9刘国梁为何不去竞选国际乒联主席?刘国梁已经有更好的选择了,所以才放弃国际乒联主席的竞选。作为国际乓球联主席的竞选其实是非常不复杂的,目前已经有八名候选人,这八名候选人之间的竞争是非常激烈的,而且呢,如果竞选成为了20122013赛季NBA总决赛第六场最后时刻波波维奇防守端换下邓肯是作何考虑?题目里已经把事情的经过说得很清楚了,波波维奇在比赛的最后时刻换下了邓肯,导致被热火队韦德和波什连续抢下了两个进攻篮板,最终被热火顽强拖进加时赛痛失冠军。如果唯结果论来看的话,这一手2016年,杜兰特成为自由球员,当时联盟各队的报价如何?2007年,雷霆队用首轮2号签选中身高臂展都十分出众,但是瘦得跟竹竿一样的杜兰特,新秀赛季,雷霆队给了杜兰特无限开火权,杜兰特迅速成长起来,之后雷霆又相继选中了威少和哈登,雷霆队很助听器会越戴越好吗,为什么?所谓的越带越好是哪方面?用户体验层面,听力值层面,生理层面。用户体验层面也许会,因为带一段时间后会逐渐适应助听器,类似于带眼镜的用户体验。听力值层面和生理层面不会,因为听力是不可逆目前华为手机,用的两年前芯片,为啥性能不输同行?友商没进步么?文小伊评科技看了很多回答,基本上都没有说到点子上。如果单从账面性能上来说,两年前的华为旗舰芯片的性能真的不输当下友商旗舰芯片么?这就是做梦,就算苹果的A系列芯片也做不到这种程度,华哪款护手霜比较滋润?干手星人冬天必备护手霜,而且是包里一支,办公室一支,家里一般会开着两支,保证随时洗手之后随时能涂。护手霜这东西我一般都是买平价的,因为冬天很冷,会喜欢喝热水,但是一喝热水就容易上厕女性可以怎样抵抗衰老?女性可以怎样抵抗衰老?健康苦行僧,开讲啦!一般来说女性28岁以后,身体的基础代谢就会趋缓,会出现一些衰老的迹象,皮肤可能会越来越差,皱纹也会增多,皮肤也会逐渐丧失弹性,因此想要永葆江南四大名城指哪四座城市?为什么会是这四座城市?江南四大名城究竟是指哪四座城市?最权威的说法是南京,扬州,苏州,杭州。关于江南,我想说江南名城众多,然而想问江南四大名城指哪四座城市。目前支持率较高且最权威的说法是江苏南京江苏扬州历史上有哪些有名的黑吃黑事件?2004年,文莱亲王杰弗里博尔基亚卷款100亿美元逃亡到美国,一对英国骗子夫妻盯上了这只肥羊。他们以律师的身份接近亲王并取得了他的信任。然后利用各种方法宰肥,不到两年的时间里,这对纽约的暴雨和郑州的暴雨,哪个更大一些?纽约降雨量相当于5万个奥运泳池蓄水量,奥运泳池蓄水量3000平方米左右,5万个相当于1。5亿立方米,杭州西湖1030万立方米,相当于5小时下了14个西湖的量,而郑州最大极值是两小时