【发布时间】:2020-06-01 16:44:36
【问题描述】:
我正在进行一项网络研究,参与者将以不同网页的形式按比例随机分配到治疗组。我有一个研究登录页面,我计划在其中根据样本量范围内的随机整数将参与者引导到不同的页面,从而将参与者分配到不同的治疗组。例如,对于 n=100 的研究,此代码可能如下所示:
/// Function for randomly shuffling array
function shuffle(array) {
array.sort(() => Math.random() - 0.5);
}
const STUDY_LEN = 100; /// Study n
const arr_0 = new Array(STUDY_LEN/2).fill(0); /// Create array for treatment 1
const arr_1 = new Array(STUDY_LEN/2).fill(1); /// Create array for treatment 2
const arr_assign = arr_0.concat(arr_1); /// Concatenate treatment arrays for entire study assignment
arr_shuffle = shuffle(arr_assign); /// Randomize order of array
for (i = 0; i < STUDY_LEN-1; i++){
if (arr_shuffle[i] == 0){
//// Change hyperlink to web page for treatment 1
}
else{
//// Change hyperlink to web page for treatment 2
}
}
如何在对网页的多次访问中存储这些变量(主要是打乱的分配数组),以便我将参与者平等地分配给每个治疗(治疗 1 中的 50 名参与者,治疗 2 中的 50 名参与者)?我的解决方案似乎不是一种非常可靠的随机分配用户不同治疗方法的方法,因此我愿意接受任何/所有建议。
【问题讨论】:
-
您可以多次尝试
shuffle()ing 以获得更好的随机分布。因为您总是有 50 (0)-50 (1),所以没有机会发生组倾斜,即。arr_assign.reduce((t,n)=> t+n)永远是 50
标签: javascript random variable-assignment