我想进行一项实验,其中我必须为我的参与者提供三种可能性(正面中性和负面:这些基本上是将在html页面中加载的类)并随机化,如下所示
function EqualDistribute(id) {
var a;
var random = Math.floor((Math.random() * 10) + 1); //number between 1 and 10
if (random <= 3) {
a = '2';
//load a neutral class
}
if (random > 3 && random <= 6) {
a = '3';
//load a positive class
}
if (random > 6) {
a = '4';
//load a negative class
}
return false;
}
&#39; a&#39;的价值加载每个类的更改 - 无论如何,现在我想做的是 - 随机化类的出现(基于mathrandom或我已经在做的其他事情,只是因此类的外观是随机的)和.. - 课程的平等分配(意味着在实验结束时所有科目都能看到/经历相同数量的课程,即 在我的情况下30阳性30阴性和30中性)
我现在正在做的只是随机显示这些类而不保持每个30的余额。
请原谅我的编程技巧 并提前感谢您的帮助,因为我坚持这里!答案 0 :(得分:0)
你可以做的是检查班级== 30,然后将你的班级从随机发行版中排除。因此,只有最后两个班级是&#34;参与&#34;。等等。
答案 1 :(得分:0)
在您的代码中,您可以使用回放进行绘图。但你必须从一个游泳池中抽出而不会放回去。
所以你的游泳池都是班级(30个否定,30个中立和30个积极)。选择一个后,这种类型应少一个(不要退回)。
var pool = [];
var count_per_class = 30;
var number_of_classes = 3;
// fill pool
for (var number = 0; number < number_of_classes; number++)
{
for (var count = 0; count < count_per_class; count++)
{
pool.push(number);
}
}
// returns a random class ID between 0 and number_of_classes - 1
function getNextClassId() {
// get random index
var randomIndex = Math.floor((Math.random() * pool.length));
var class_number = pool[randomIndex];
// remove item at index
var start = pool.slice(0, randomIndex);
var end = pool.slice(randomIndex + 1, pool.length);
pool = start.concat(end);
return class_number;
}
// test if it works
var testArray = [];
for (var i = 0; i < number_of_classes; i++) {
testArray[i] = 0;
}
// take out while classes remain in pool
while (pool.length > 0) {
// Do something here with this ID, e.g. count occurrences for every class
// should be count_per_class at the end for each index.
testArray[getNextClassId()]++;
}
// prints [30, 30, 30]
console.log(testArray);
答案 2 :(得分:0)
如果你想在重新加载时进行测试,你可能需要使用localStorage
。
查看此 CodePen Demo 并尝试刷新页面。