从一组中随机生成数字?

时间:2014-11-19 17:05:26

标签: matlab random

在MATLAB中,我有一组P个数字。我想从这个集合中生成一个大小为N的随机数组。

为了举例,假设我有一组{1, 4}。假设我想生成一个大小为5的数组(例如[1 1 4 1 4])。

我做的是:我使用randi生成了以下数组。

N = 5;
v = randi([1 4],[1 N]);

问题是我有一个随机数组,其中包含1:4而不是{1, 4}中的值。 我可以简单地做到这一点,但我需要一个更好的方法。

for i = 1:length(v)
    if v(i) ~= 1 || v(i) ~= 4
       v(i) = 1; % or v(i) = 4
    end
end

我想我在这里错过了一个简单的提示。

2 个答案:

答案 0 :(得分:4)

您应该使用datasample

y = datasample(data,k)返回从k中的数据随机统一抽样data个观察结果。

a = [1,4];
datasample(a,5)

根据使用情况,您可以考虑使用,

datasample(unique(a),5)

答案 1 :(得分:4)

如果您没有统计工具箱(包含datasample功能),则可以使用randi

N = 5; %// desired number of samples
data = [1 4]; %// data values
sample = data(randi(numel(data),1,N));

如果您使用的是没有randi的旧版Matlab,则可以使用rand

sample = data(ceil(numel(data)*rand(1,N)));