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

Generating random number that will not repeat between surveys in Qualtrics using javascript

免责声明:我不熟悉 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 代码 "resets" 本身在调查响应之间,这意味着每次新的受访者进入时它都会重新创建和重新排列数组民意调查。我想找到一种方法来做到这一点,这样新的受访者就不可能看到与以前的受访者相同的弹出 "randomnumber"。因此,如果第一个调查受访者看到 1,那么下一个调查受访者可以看到 1 以外的任何数字(假设他们看到的是 100),下一个受访者可以看到 1 或 100 以外的任何数字,等等.

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

感谢所有帮助!

您可以使用 Qualtrics 中的高级随机化来做您想做的事。

设置一个多项选择题,将您的数字 0 到 8,764 作为选项。然后使用 Advanced Randomization 从所有数字中 select 1 的随机子集,然后单击 "Evenly Present"(Evenly Present 告诉 Qualtrics 在重复使用任何数字之前使用每个数字)。使用JavaScript隐藏选择题:

$(this.questionId).hide();

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

${q://QID1/ChoiceGroup/DisplayedChoices}