在循环中创建不同的`randperm`数字

时间:2014-09-02 09:09:24

标签: matlab for-loop random random-sample

假设我们有这样的结构:

for i=1:x1
Out = randperm(40);
Out_Final = %% divide 'Out' to 10 parts. and select these parts for some purposes

for j=1:x2

%% Process on `Out_Final`

end
end

我正在使用外部循环(for i=1:x1)重复主进程(for j=1:x2) loop并在输出之间取平均值以获得更强大的结果。我希望randperm不会产生相等(或接近相等)的输出。我希望在(for i=1:x1)循环中的每个调用中尽可能为此函数提供不同的输出。

我如何在MATLAB R2014a

中执行此操作

1 个答案:

答案 0 :(得分:1)

randperm使用的随机性算法非常好。所以,不要担心。

但是,如果你从1到10中抽取10个随机数,你可能会比其他人更频繁地看到一些。

如果你真的不想要这个,你可能不应该专注于随机选择数字,而是选择数字,以便它们很好地分布在他们可能的范围内。 (这是一个完全不同的问题要解决)。


解决你的意见:

rng功能可让您创建可重现的结果,请务必查看doc rng示例。

在您的情况下,您似乎实际上不想每次都重置rng,因为这会导致相关的随机数。