我正在尝试使用Matlab的randperm
并调用randperm = 6
生成1到6之间的随机数。
每次这给我一个不同的数组时,例如:
x = randperm(6)
x = [3 2 4 1 5 6]
我想知道是否有可能创建成对的随机数,以便最终得到像
x
这样的代码:x = [3 4 1 2 5 6]
我需要对 vector 进行排列,以使1和2总是彼此相邻,3和4彼此相邻,而5和6彼此相邻。因为我正在用
Psychtoolbox
做某事,所以此顺序很重要。是否可以具有随机顺序的“块”?我不知道该怎么做。
谢谢
最佳答案
我可以看到一个简单的三步过程来获得所需的输出:
2*randperm(3)
randperm(2)-2
(随机排序的一对(-1,0)
)。 在代码中:
x = randperm(3)
y = 2*x([1 1 2 2 3 3])
z = y + ([randperm(2),randperm(2),randperm(2)]-2)
结果
x = 3 1 2
y = 6 6 2 2 4 4
z = 6 5 2 1 3 4
关于arrays - 对随机数Matlab,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45786911/