来自1-10个实例的4个不同数据,另外4个来自11-20个实例,另外4个来自21-30个实例。
我用过randperm(n,k)函数
k-> 4%没有不同的数据
n%范围从1-nth实例随机选择
因此,在第一次迭代中,n = 10.因此它将从第1至第10个实例中随机获取
n第二次必须在11-20范围内
所以,我尝试给n = 20,但后来我想。它将从1-20搜索我想要11-20的位置。
因此,如果在第一次迭代中选择2,4,6,7,那么未在第一次迭代(1-10)中选择的数据可以进入此迭代。在第二次迭代中,除了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
这不是永久性的解决方案
有人知道怎么做吗?
提前致谢
你知道randperm(10,4)
给你1个范围1-10的唯一整数。要获得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
我认为这里有比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”是上限。我希望这能回答你的问题,如果没有,请随时提出。