在otree中随机选择一组数字

时间:2018-06-04 23:18:56

标签: otree

我试图生成随机数组。我的实验中有 x 轮。我想在每一轮中显示不同的图片,并且图片以随机顺序出现。 我试图在models.py中嵌入一些python代码来做到这一点,但我没有得到任何地方。

1 个答案:

答案 0 :(得分:0)

好吧,假设你有一组名为'img1.jpg,img2.jpg,img3.jpg'等的图像 - 为了简单起见,我们假设这些图像的数量与你的轮数一致。

有点天真但可行的方法是:

models.py中的

import random 
class Constants(BaseConstants):
    imgs = ['img1.jpg', 'img2.jpg', 'img3.jpg',]

class Subsession(BaseSubsession):
    def creating_session(self):
       if self.round_number == 1:
          for p in self.session.get_participants():
              imgs = Constants.imgs.copy()
              random.shuffle(imgs) 
              p.vars['images'] = imgs
pages.py中的

class MyPage(Page):
      def vars_for_template(self):
          image = self.participant.vars['images'][self.round_number - 1]
          return {'img_to_show': image}

就是这样:每个参与者都有一个单独的随机图像显示在每一轮中,以后您可以在此页面的模板上使用

PS:我称这种方法是天真的,因为稍微复杂一点的方法是访问存储图像的文件夹,并获得与游戏中轮次数相对应的子集。但有时这种直接方法更容易出错。