Есть ли способ рандомизировать порядок подциклов в главном l oop? - PullRequest
1 голос
/ 24 февраля 2020

У меня есть 6 различных блоков (for-loop), которые являются частью основного for-l oop. Каждый блок, состоящий из 6 случайно выбранных стимулов, должен быть представлен двенадцать раз. Представление блоков должно происходить в случайном порядке.

До сих пор я создал основной l oop вокруг шести блоков, который повторяется двенадцать раз, и я планировал рандомизировать порядок блоков с помощью TrialHandler от PsychoPy. , Однако это не работает так, как должно, и я должен найти другой способ. Я думал:

  1. Я мог бы составить список (из чисел или строк) и перемешать этот список, а затем создать условия if для вспомогательных циклов, т.е. "if" Block1 "- список [ 0], затем инициализируется for-l oop Block 1. Что-то подобное работает? Если да, то как мне это реализовать, потому что в идеале я хочу сгенерировать порядок подциклов со списком.

  2. Другая идея касается TrialHandler и, таким образом, указывает c на PsychoPy. Мне было интересно, возможно ли создать файл Excel, содержащий различные блоки, и добавить его к параметру условий основной l oop. Если бы каждый блок был строкой, PsychoPy мог бы их рандомизировать, однако я не уверен, работает ли это и как можно добавить блоки в файл Excel.

Представляется ли какое-либо из этих решений разумным или есть другой способ добиться рандомизации?

1 Ответ

1 голос
/ 24 февраля 2020

Поскольку 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...