【发布时间】:2019-08-15 12:24:39
【问题描述】:
我正在 Matlab Psychtoolbox 中编写一个实验,我的条件存储在这样的数组中
Cond = ["VM" "VM" "VN" "VS" "AM" "AM" "AN" "AS" "CM" "CM" "CN" "CS"...
"VM" "VM" "VN" "VS" "AM" "AM" "AN" "AS" "CM" "CM" "CN" "CS"];
我现在想以没有重复条件的方式对数组进行洗牌。
有很多关于这个问题的处理方法,例如this one,但它们总是同样频繁地出现每种情况。
有些人提出了一种蛮力方法,经常洗牌,直到达到这个标准。但由于我有这种条件数组的树,并且每次实验运行都必须将它们洗牌几次,我认为这不是一个好的解决方案。
希望有人能帮忙
【问题讨论】:
-
我不确定您是否可以“有条件地随机播放”。如果您想要随机洗牌,请这样做直到它符合您的标准。否则,请找到一种算法,使用特定约束对数据进行排序(而不是打乱)。但是如果你想要随机性,那么你需要使用蛮力方法。 (我认为)
-
此外,您不必在每次实验时都强制执行,只需生成满足您的“打乱”条件的所有可能组合的列表并随机选择其中一个排列。
-
如何随机打乱数组,然后遍历它并获取与其前身相等的每个元素并将其移动到末尾。然后,最后你可能有一些不满足你的条件的元素。获取这些元素并通过再次遍历数组并找到与该元素不同的两个连续元素并将其插入其中来为每个元素找到一个位置。
标签: arrays matlab shuffle psychtoolbox