如何修复随机数的出现

时间:2016-03-04 15:57:46

标签: matlab random

我有以下代码:

Accuracy=off(data,z)
for i=1:100
    n = size(data,1);
    data_rand = data(randperm(n),:);
    m = ceil(n/20);
    k = 1:m:n-m;
    test = data_rand(k:k+m-1,:);
    train = [data_rand(1:k-1,:); data_rand(k+m:end,:)];
    %/  code to calculate auc
end
accuracy=mean(auc)

每次迭代都会更改traintest的值,因此每次都会更改auc的值。

说最终结果为accuracy=0.7654,另一时间为accuracy=0.6543accuracy=0.4657。我想修改一个特定的结果,比如0.6543,即如果我运行前面的代码多次,我想获得相同的结果(0.6543)。

1 个答案:

答案 0 :(得分:1)

您的问题是随机数生成器(RNG)。通过在声明for循环后将rng('default')设置为第一行来解决此问题。这迫使RNG始终在同一点开始。

seed可以简单地选择:

seed = 4; %// starts the seed at 4
rng(seed);

您可以使用种子编号来查找哪个数字可以为您带来令人满意的排列。