如何根据以前的答案确定在测验中询问用户的问题

时间:2015-03-20 02:57:08

标签: php mysql

我有一个类别中的问题列表,并且想要选择它们的一个子集,以便根据用户之前正确/错误的回答来询问用户。 我想让它随机,但在某种程度上,他们更麻烦的是被更频繁地询问。

编辑:我试图弄清楚如何根据每个问题的正确/错误回答次数来计算每个问题的重量/偏差/得分。

我想出了以下内容,但对我来说似乎很奇怪: 我根据每个问题回答正确/错误的次数为每个问题分配一个分数 显然,如果他们从未被问过我需要分配任意分数的问题(我选择了5分) 对于所有其他问题,我使用公式

score = wrong*2-right

所以,如果我有以下10个问题,那么"得分"将为每一个计算(R =他们正确的次数,W =他们错误的次数和S =得分的次数)。从那里,我取最低分并指定概率为1(在这种情况下,id = 5,得分为-7)。然后我取最低分和第二低分之间的差异(id = 1,-5,差值为2),并为其分配1 +差值= 3的概率。 我为每个问题继续这个,然后最后我可以选择Min(1)和Max(82)之间的随机数,并选择具有最高P的问题,其中随机< P.所以如果我的随机#是79,我会选择id = 2.

但这似乎很漫长而且令人费解。有没有更简单的方法(我使用PHP和mysql,但我计划在具有本地数据存储区的应用程序中执行此操作)

id  R   W   S   P   
1   5   0   -5  3   
2   3   5   7   82  
3   6   2   -2  8   
4   2   2   2   23      
5   9   1   -7  1   
6   3   1   -1  14  
7   0   0   5   68
8   7   5   3   33
9   6   5   4   44
10  3   4   5   56

编辑:澄清一下,我一直坚持"体重" (在我的例子中为P值)......我试图找到一种计算"重量的好(和快)方法"对于每个问题,考虑到他们为问题提供的正确和错误答案的数量

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的答案,但似乎你正在寻找一种"加权"随机数发生器。在本质上,你想要做的就是给他们带来更多重量问题的问题。也许创建一个名为问题的类,其中包含权重属性。那个属性可以容纳你放入多少重量。然后,当您选择随机数生成器时,请使用类似的内容。

http://codetheory.in/weighted-biased-random-number-generation-with-javascript-based-on-probability/

答案 1 :(得分:0)

在做了一些研究之后,我意识到我计算体重的初始方法有点慢。使用公式后,我最终得到了一些-ve权重。然后我必须通过每一个并为每个重量添加ABS(MIN(S)),这是不必要的。

我的新公式是S = CEILING(错* 5 /右)

显然我需要考虑0值,所以代码是:

if (R == 0 AND W == 0) S = 10
else if (R == 0)       S = W*5
else if (W == 0)       S = CEILING(5/R)
else                   S = CEILING(W * 5 / R)

我已经计算了一些样本集的数字,这给了我相当不错的结果。它还允许我在数据库中更新SCORE值,因此不需要每次都重新计算(只要在回答该问题时更新) 一旦我有一组60个左右的问题并且我想选择其中的5个或10个,我可以在1-SUM(SCORE)之间创建一个随机#,然后使用二分搜索来找出代表哪个问题。 / p>

如果有人有更好的计算分数/体重/偏见的建议或者其他任何东西,我会很感激。