来自1-10个实例的4个不同数据,另外4个来自11-20个实例,另外4个来自21-30个实例。
我用过 randperm(n,k)函数
k-> 4%没有不同的数据
n%范围从第1个实例随机选择
因此,在第一次迭代中,n = 10.因此它将从第1至第10个实例中随机获取
n第二次必须在11-20
的范围内所以,我尝试给n = 20,但后来我想。它将从1-20搜索我想要11-20的位置。
因此,未在第一次迭代(1-10)中选择的数据可以在此迭代中出现 例如,如果2,4,6,7在第一次迭代中选择。在第二次迭代中,除了2,4,6,7之外,它将在1-20之间进行选择。所以,第3,第8个实例可以来。我想要的地方应该在11-20之内
最终它将存储4个索引 rnd = randperm(n,k) xr1 = rnd(1)%存储在rnd
中的第一个索引值c是计数器中的循环从0开始
因此,对于第二次迭代c = 1
我做了一些小调整 获取数据后
xr1 = rnd(1)+ c * 10
所以,确切地说,我没有得到随机值 如果在第一轮中选择2,4,6,7 所以,在圆形我选择12,14,16,17
这不是永久性修复
有人知道怎么做吗?
提前致谢
答案 0 :(得分:1)
您知道randperm(10,4)
为您提供范围1-10中的4个唯一整数。要获得11-20范围内的4个唯一整数,只需添加10.对于范围21-30,添加20:
randperm(10,4) % 4 random unique integers in range 1-10
randperm(10,4) + 10 % 4 random unique integers in range 11-20
randperm(10,4) + 20 % 4 random unique integers in range 21-30
答案 1 :(得分:0)
我认为这里的方法比randperm更好。 如果你想要2个限制之间的随机整数,请检查:
desired_number = round(10 +(20 - 10)。* rand(1,1));
此代码将为您提供10到20之间的随机整数,您可以使用变量更改10和20并使用for或while循环
简而言之: 式: desired_number = round(a +(b - a)。* rand(1,1)); 其中“a”是下限“b”是上限。 我希望这能回答你的问题,如果没有,请随时提出。