MATLAB中刺激类别间最小间隔的伪随机化
对于一个实验,我需要对100个刺激类别的试验向量进行伪随机,其中80%为a类、10%B类和10%C类。B类试验之间至少有两个非B类试验,C类试验必须在两个a类试验之后进行,并在其后进行两个a类试验 起初,我尝试构建一个脚本,随机分配一个向量,然后“弹出”出不应该出现的试验,并将它们放在向量中有一长串试验的空间中。但我担心这过于复杂,会产生一系列需要调试的不可预见的错误,而且随机性不够 之后,我尝试构建一个脚本,该脚本简单地洗牌向量,直到它达到标准,这似乎需要更少的代码。然而,现在我已经花了几个小时在它上面,我想知道这些标准是否太严格了,这就没有意义了,这意味着向量在真正满足标准之前需要永远洗牌MATLAB中刺激类别间最小间隔的伪随机化,matlab,vector,random,shuffle,Matlab,Vector,Random,Shuffle,对于一个实验,我需要对100个刺激类别的试验向量进行伪随机,其中80%为a类、10%B类和10%C类。B类试验之间至少有两个非B类试验,C类试验必须在两个a类试验之后进行,并在其后进行两个a类试验 起初,我尝试构建一个脚本,随机分配一个向量,然后“弹出”出不应该出现的试验,并将它们放在向量中有一长串试验的空间中。但我担心这过于复杂,会产生一系列需要调试的不可预见的错误,而且随机性不够 之后,我尝试构建一个脚本,该脚本简单地洗牌向量,直到它达到标准,这似乎需要更少的代码。然而,现在我已经花了几个小
你认为处理这个问题最简单的方法是什么?此外,由于psychtoolbox中的shuffle似乎无法正常工作,因此使用哪种洗牌函数最好?这个问题的范围远远超出了特定于语言的结构,涉及到对概率和排列/组合的良好理解 解决这个问题的方法是:
A
没有对其施加任何约束,因此我们将转到下一个类别
第1部分:使C类独立
类别C
的唯一限制是它必须在前后有两个A
。因此,我们首先创建5个向量的随机组,模式为aa
此时,我们有一个A
向量的数组(不包括块),A A C A
向量的块和B
向量
第2部分:解决B的放置问题
B
的约束条件是两个连续的B
s之间必须至少有两个非B
向量
可视化如下:让我们将A
和A A A C A
集中在一个数组中,X
。让我们将所有B
s排成一行(假设有3个B
s):s0bs1bs2bs3
其中
s
是每个B
之间的向量数。因此,我们要求s1
,s2
至少为2,并且总体s0+s1+s2+s3
等于X
中的向量数
然后,任务是从X中选择随机向量,并将它们分配给每个s
。最后,我们得到了一个所有类别都被洗牌的随机向量,满足约束条件
另一方面,这可以映射到一个经典问题,即寻找一组随机数,这些随机数加起来等于一个特定的总和,并带有约束条件。
将约束和问题简化为无约束问题更容易。这可以通过以下方式完成:s0 B s1 t1 B s2 t2 B s3
其中,
t1
和t2
从X
中选择,刚好满足B
上的约束,并且s0+s1+s2+s3
等于X中不在t
中的向量数
实施
在MATLAB中实现同样的功能可以从使用单元阵列和常数和的随机数中获益
您还需要为每个类别维护单独的池,并保留构建块并将它们组合在一起
真的,这不是小事,也不是不可能。如果你想像以前一样放弃暴力搜索,这就是你可以尝试的方法。真实数字?整数?什么是“3空间”?我的意思是向量上的索引,所以如果向量(8)是C类刺激,下一个可以是C类的索引就是向量(11)。中间必须有两次A测试。我正在更新原始帖子以反映这一点。你能解释一下你对“伪随机”的要求吗?由于每一类的试验数量不同,随机试验也将包含更多的“A”而不是“B”和“C”。可以吗?是的,它应该包含每个类别的相同比例,只是随机的。我不完全清楚为什么给我“伪随机化”这个词,但根据我的理解,你可以用“随机化”这个词来代替。我想这只是说,任何不产生真正随机数(或随机数)的函数都足够了。@Damon如果您有任何疑问,请告诉我。我希望您能够自己尝试一个实现——也许将来我有空的时候,我可以自己编写代码。谢谢,这非常有帮助。我相信我理解这个想法,但我对一些术语有点理解。为了简单起见,假设条件B和C是相同的,它们的向量应该分别像[A A A]和[A A C A]。这是否意味着我应该从一个更大的向量[a a[a B a a][a B a][a a a B a][a a a C a]开始,然后随机组合元素?是的,没错。因此在这种情况下,[A A[A B A A][A B A][A A A B A][A A A C A][A A A A C A][A A A A A]应该被随机洗牌(可以在MATLAB中使用),然后这些块应该被“合并”最后,这样你就有了[A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A,把它们都放在一个池子里,就像你上面提到的。