Matlab_RandomNumber

本文介绍了Matlab中随机数的生成方法,包括单个或多个在不同区间的随机数、随机整数、正态分布随机数、二进制随机数、复数随机数的生成,还提及了生成相同随机序列时设置种子数的方法。

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

添加链接描述
随机数生成

  1. 单个随机数在0到1之间:使用rand()函数。
  2. 单个随机数在a和b之间:使用rand() % (b-a+1) + a。
  3. N个随机数在0到1之间:使用rand(N,1)。
  4. N个随机数在a和b之间:使用rand(N,1) * (b-a+1) + a。
  5. 单个随机整数在0到N之间:使用rand() % N。
  6. 单个随机整数在a和b之间:使用rand() % (b-a+1) + a。
  7. N个随机数在0到N之间:使用rand(N,1)。
  8. N个随机数在a和b之间:使用rand(N,1) * (b-a+1) + a。
  9. N个正态分布随机数,均值为0,标准差为1:使用randn(N,1)。
  10. N个正态分布随机数,均值为m,标准差为1:使用randn(N,1) * (m-0) + 0。
  11. N个正态分布随机数,均值为m,标准差为s:使用randn(N,1) * (s-0) + m。
  12. N个二进制随机数,取值为0或1:使用randi([0,1], N)。
  13. N个二进制随机数,取值为-1或1:使用randi([-1,1], N)。
  14. 复数随机数,实部在[-1,1]之间,虚部在[-1,1]之间:使用rand() * exp(1i * 2 * pi * rand())。
  15. 生成相同的随机序列 - 设置种子数:使用set.seed(seed_number)。
< Single Random Number between 0 and 1 >

 

Case 1 : r = rand(1,1)

 

Ex)

Input

r = rand(1,1);

Output

r =

         0.36579

 

 

< Single Random Number between a and b >

 

Case 1 : r = a + (b-a)*rand(1,1)

 

Ex)

Input

a = 2;

b = 5;

r = a + (b-a)*rand(1,1)

Output

r =

         2.36579

 

 

< N Random Number between 0 and 1 >

 

Case 1 : r = rand(1,N)

 

Ex)

Input

r = rand(1,5);

Output

r =

         0.199260   0.814680   0.687995   0.666070   0.013624

 

 

< N Random Number between a and b >

 

Case 1 : r = a + (b-a)*rand(1,N)

 

Ex)

Input

a = 2;

b = 5;

r = a + (b-a)*rand(1,5)

Output

r =

         2.6419   4.1258   4.7051   2.0323   3.4711

 

 

< Single Random Integer between 0 and N >

 

Case 1 : r = randi(N)

 

Ex)

Input

r = randi(10)

Output

r =

         5

 

 

< Single Random Integer between a and b >

 

Case 1 : r = randi([a b]) // where a and b are all integer

 

Ex)

Input

r = randi([100 200])

Output

r =

         163

 

 

< N Random Number between 0 and M >

 

Case 1 : ri = randi(M,1,N)

 

Ex)

Input

r = randi(100,1,10)

Output

r =

          20   39   63   81   67   54   34   16   93   19

 

 

< N Random Number between a and b >

 

Case 1 : ri = randi([a b],1,N)

 

Ex)

Input

r = randi([100 200],1,10)

Output

r =

          150   114   142   189   172   103   190   102   196   194

 

 

< N Random Number of Normal Distribution with mean =0, standard deviation = 1 >

 

Case 1 : r = randn(1,N)

 

Ex)

Input

r = randn(1,5)

Output

r =

           0.054629  -1.137793   0.736904  -0.326762   0.336358  

 

 

< N Random Number of Normal Distribution with mean =m, standard deviation = 1 >

 

Case 1 : r = randn(1,N) + m

 

Ex)

Input

r = randn(1,5) + 10

Output

r =

           9.4378    9.8131    9.6165   10.0008   10.4438  

 

 

< N Random Number of Normal Distribution with mean =m, standard deviation = s >

 

Case 1 : r = sqrt(s)*randn(1,N) + m

 

Ex)

Input

r = sqrt(2)*randn(1,5) + 10

Output

r =

           10.1046    9.7616    7.7163   11.1219   10.2368  

 

 

< N Binary Random Number with 0 and 1 >

 

Case 1 : r = randi([0 1],1,N)

 

Ex)

Input

r = randi([0 1],1,5)

Output

r =

           1    0    0   1   1  

 

 

< N Binary Random Number with -1 and 1 >

 

Case 1 : r = 2*randi([0 1],1,N)-1

 

Ex)

Input

r = 2*randi([0 1],1,5)-1

Output

r =

           1  -1  -1    1    1  

 

 

< Complex Random Number with Re = {-1,1}, Im = {-1,1} >

 

Case 1 : r = (2*randi([0 1],1,N)-1)+j*(2*randi([0 1],1,N)-1)

 

Ex)

Input

r = (2*randi([0 1],1,5)-1)+j*(2*randi([0 1],1,5)-1)

Output

r =

           -1 + 1i  -1 - 1i  -1 + 1i  -1 - 1i   1 - 1i  

 

### 使用 `randn` 函数生成正态分布随机数 在 MATLAB 中可以利用内置函数 `randn` 来生成标准正态分布的随机数。此函数能够创建指定维度的数组,其中每一个元素都是独立同分布的标准正态变量[^1]。 对于非标准正态分布(即均值不为零或方差不是一的情况),可以通过线性变换来实现。如果想要得到具有特定平均值 μ 和标准偏差 σ 的正态分布数据,则可按照下面的方式操作: ```matlab mu = 5; % 均值 sigma = 2; % 标准差 m = 1000; % 行数 n = 1; % 列数 r = mu + sigma .* randn(m, n); ``` 这段代码会生成 m×n 大小、均值为μ、标准差为σ的正态分布随机数矩阵 r。 另外一种方式是通过 `normrnd` 函数直接设置所需的参数来获取期望分布的数据集[^5]: ```matlab data = normrnd(mu, sigma, [m,n]); ``` 这里同样指定了均值和标准差,并且定义了输出矩阵大小[m,n]。 当遇到旧版MATLAB中关于随机算法选项的问题时,比如 RandnAlg 不被识别的情况下,应该依据当前使用的MATLAB版本调整相应的配置项名称;例如,在较新的版本里可能是 NormalTransform 而不再是 RandnAlg[^4]。 ### 创建自定义随机流并使用 `randn` 为了更精确控制随机数产生的过程以及确保不同计算之间的重复性,还可以建立一个新的 `RandStream` 对象实例,并设定好种子和其他属性之后再调用它的成员方法 `randn` 生产所需类型的伪随机数值序列。 ```matlab stream = RandStream('mlfg6331_64','Seed',1); prev_stream = RandStream.setGlobalStream(stream); R = randn(prev_stream,m,n); ``` 上述命令先建立了多维反馈移位寄存器生成器 (MLFG),设定了初始状态后替换了全局默认的随机源,最后基于更新后的环境产生了满足条件的结果 R。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值