我有一个类别中的问题列表,并且想要选择它们的一个子集,以便根据用户之前正确/错误的回答来询问用户。 我想让它随机,但在某种程度上,他们更麻烦的是被更频繁地询问。
编辑:我试图弄清楚如何根据每个问题的正确/错误回答次数来计算每个问题的重量/偏差/得分。
我想出了以下内容,但对我来说似乎很奇怪: 我根据每个问题回答正确/错误的次数为每个问题分配一个分数 显然,如果他们从未被问过我需要分配任意分数的问题(我选择了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值)......我试图找到一种计算"重量的好(和快)方法"对于每个问题,考虑到他们为问题提供的正确和错误答案的数量
答案 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>
如果有人有更好的计算分数/体重/偏见的建议或者其他任何东西,我会很感激。