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

标签 javascript arrays qualtrics

免责声明:我不熟悉 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 代码,以便不从数组中删除与先前弹出的随机数之一匹配的任何数字。我缺乏执行此操作的技术知识,即使这是完成任务的最佳方法。

感谢所有帮助!

最佳答案

您可以使用 Qualtrics 中的高级随机化来完成您想要的操作。

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

$(this.questionId).hide();

现在您可以将唯一的随机数传递到后续问题中。例如:

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

关于javascript - 使用 javascript 生成在 Qualtrics 中的调查之间不会重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838106/

相关文章:

arrays - 使用 make 或默认初始化的不同大小的数组

ios - 快速在 TableView 之间传递数据

html - 删除媒体控件并创建自动播放媒体

javascript - axios 的包装函数

forms - primeFaces : fileUpload to byte[]

javascript - 质量 javascript : autopopulate matrix table using previous answers

javascript - 使用 REST API 时,Meteor 是否保留 react 性

javascript - 无法从另一个函数恢复 Canvas 上下文

javascript - Webpack 5 多个 javascript 文件在生产模式下产生 0 字节包

javascript - 数字不均匀分布的随机数生成器