使用javascript生成Qualtrics中的调查之间不会重复的随机数

问题描述 投票:0回答:1

免责声明:我不熟悉Javascript。我只是简单地从Stack Overflow和其他资源中粗略地理解了我需要做什么。如果下面的内容不清楚,我表示歉意。

我的问题:我需要使用Javascript在0到8,764之间生成一个随机数,它不会在Qualtrics调查响应之间重复。

目前,我发现代码创建一个包含0到8,764之间所有数字的数组,对数组进行混洗,并弹出数组末尾的最后一个数字。然后,它使用该弹出的数字将嵌入数据添加到Qualtrics,然后我可以将嵌入的数据传输到Qualtrics问题中,以将其显示给我的调查受访者。见下文:

Qualtrics.SurveyEngine.addOnReady(function()
{

for (var i = 0, ar = []; i < 8; i++) {
ar[i] = i;
}

ar.sort(function () {
  return Math.random() - 0.5;
});

var randomnumber = ar.pop();

Qualtrics.SurveyEngine.addEmbeddedData("randomnumber", randomnumber);

});

但是,据我所知,这个Javascript代码在调查回复之间“重置”,这意味着每次新的受访者进入调查时它都会重新创建并重新洗牌。我想找到一种方法来使新的受访者不可能看到与之前的受访者相同的弹出“随机数”。因此,如果第一个调查受访者看到1,那么下一个调查受访者可以看到除1之外的任何数字(假设他们看到100而不是),并且下一个受访者可以看到除1或100等之外的任何数字等。

我认为可以在Javascript代码中使用嵌入数据并对其进行操作(see here)。似乎可能有一种方法可以访问随机数字嵌入数据并编写Javascript代码,以便不从数组中删除与先前弹出的随机数之一匹配的任何数字。如果它甚至是完成任务的最佳方式,我缺乏执行此操作的技术知识。

任何和所有帮助表示赞赏!

javascript arrays qualtrics
1个回答
0
投票

您可以使用Qualtrics中的高级随机化执行所需操作。

设置一个多项选择题,数字0到8,764作为选项。然后使用高级随机化从所有数字中选择1的随机子集,然后单击“均匀存在”(均匀存在是告诉Qualtrics在重用任何数字之前使用每个数字)。使用JavaScript隐藏多项选择题:

$(this.questionId).hide();

现在,您可以将您的唯一随机数输入后续问题。例如:

${q://QID1/ChoiceGroup/DisplayedChoices}
© www.soinside.com 2019 - 2024. All rights reserved.