And it would be quite easy to do this as a new question-type plugin ... for someone who knows what he's doing, or maybe for someone who only has a background in programming but could count on a little help if needed.
Here is how I see it. The new question-type plugin could be created from the multiple choice question.
If the correct choices have different values, for example 25% and 50% so that 25% x two choices + 50% x one choice = 100%, you have to consider different question banks for the different values. To keep things simple, at least as a first step, let's assume that the correct choices all have the same value.
Let's introduce the following variables:
n: the number of correct choices presented to the student
np: the number of correct choices in the choice bank
m: the number of incorrect choices presented to the student
mp: the number of incorrect choices in the choice bank
The following restrictions apply:
n >= 1
m >= 1
np >= n
mp >= m
The total number of choices presented to the student is equal to n + m.
In the question settings, the teacher sets the following options:
Total number of choices presented to the student, n + m
Number of correct choices presented to the student, n
More or less the same algorithm applies when there is only one correct choice or several correct choices.
The positive values of the correct choices are limited to the single value 1/n, for example 50 % when n = 2. Different negative values can be chosen by the teacher for the incorrect choices.
The np correct choices are identified by their positive value. Of these choices, n choices are chosen at random.
The mp incorrect choices are identified by their null or negative values. From these choices, m choices are chosen at random.
The n and m choices are presented to the student, in order or shuffled.
The student's result is the total of the points obtained for choices n and m.