一个数组[a1, a2, ..., an],怎么用这个数组生成随机数,随机数的数值为数组的索引1~n,概率和数组数值的大小有关,用matlab写出
时间: 2024-02-09 12:07:55 浏览: 70
用matlab产生随机数,呵呵,设计很多概率分布
5星 · 资源好评率100%
可以使用MATLAB中的rand()函数来生成随机数,并利用数组的数值大小设置概率。具体实现如下:
1. 首先计算数组数值的总和sum,即sum = a1 + a2 + ... + an。
2. 然后生成一个随机数r,r的取值范围为[0,1)。
3. 遍历数组,对于第i个数,计算概率p = ai / sum。
4. 判断r是否小于等于p,若成立,则返回i作为随机数的索引;否则,r减去p,继续遍历下一个数,直到找到满足条件的随机数。
下面是MATLAB代码实现:
```matlab
function index = randomIndex(a)
% 生成随机索引
n = length(a);
sum = 0;
for i = 1:n
sum = sum + a(i);
end
r = rand();
for i = 1:n
p = a(i) / sum;
if r <= p
index = i;
return;
else
r = r - p;
end
end
end
```
使用该函数可以生成一个随机索引,例如:
```matlab
a = [1 2 3 4 5];
index = randomIndex(a);
disp(index);
```
这样就可以根据数组a的数值大小,生成一个随机索引。
阅读全文