假设我们有这样的结构:
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
?
答案 0 :(得分:1)
randperm
使用的随机性算法非常好。所以,不要担心。
但是,如果你从1到10中抽取10个随机数,你可能会比其他人更频繁地看到一些。
如果你真的不想要这个,你可能不应该专注于随机选择数字,而是选择数字,以便它们很好地分布在他们可能的范围内。 (这是一个完全不同的问题要解决)。
解决你的意见:
rng
功能可让您创建可重现的结果,请务必查看doc rng
示例。
在您的情况下,您似乎实际上不想每次都重置rng
,因为这会导致相关的随机数。