有没有一种方法可以随机化主循环中子循环的顺序?

时间:2020-02-24 13:19:07

标签: python python-3.x random

我有6个不同的块(for循环),它们是main for循环的一部分。每个块由6个随机选择的刺激组成,应该呈现十二次。块的显示应以随机顺序进行。

到目前为止,我围绕六个块创建了一个主循环,该主循环重复了12次,并且我计划使用PsychoPy的TrialHandler随机分配块的顺序。但是,这不能按应有的方式工作,我必须找出另一种方式。我在想:

  1. 我可以创建一个列表(由数字或字符串组成)并重新排列此列表,然后为子循环创建if条件,即“如果“ Block1”为list [0],则for循环Block1为

  2. 如果是这样的话,我该如何实现它,因为理想情况下,我想用列表生成子循环的顺序。

  3. 另一个想法涉及TrialHandler,因此特定于PsychoPy。我想知道是否可以创建一个包含不同块的Excel文件,并将其添加到主循环的conditions参数中。如果每个块都是一行,PsychoPy将能够将它们随机化。但是,我不确定这是否可行以及如何将这些块添加到excel文件中。

这些解决方案中的任何一个看起来合理吗,还是有另一种方法来实现随机化?

1 个答案:

答案 0 :(得分:1)

由于Python函数本质上是对象,因此您可以将它们分配给列表或字典:

from random import randint


def foo():
    # do things
    print('foo')

def bar():
    print('bar')

funcs = [foo, bar]

random_int = randint(0, len(funcs)-1) # generate a int between 0 and last entry of the list
funcs[randint]() # this calls the function in position randon_int