随机显示,分布均匀

时间:2017-09-21 20:19:39

标签: javascript jquery html

我想进行一项实验,其中我必须为我的参与者提供三种可能性(正面中性和负面:这些基本上是将在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的余额。

请原谅我的编程技巧 并提前感谢您的帮助,因为我坚持这里!

3 个答案:

答案 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 并尝试刷新页面。