(qualitrics and other survey tools do, so it can't be that complicated)
Qualtrics was acquired for 8 Billion dollars by SAP. Not sure if it is fair to compare the resources of a multi billion dollar company , with the resources of an open source project. (Last time I got a quote from Qualtrics, their smallest package started at $5000 per year. So far to that.). So I am not really surprised that Qualtrics outperforms Limesurvey in a couple of aspects.
Even distribution would require an adaptive distribution ("Least filled bucket"), which is not implemented in Limesurvey. And I don't think it is sooo easy to implement. However, I am sure the developers would appreciate to receive a pull request with this being implemented (or as an alternative a sponsor for this feature).
If we could access previous responses in the survey through Expression Manager, we could create something like that as a work around. I think I recall that this is planned for some of the future releases, but I am not sure if it was for the upcomming LS4 or LS5.
If you want to do something like this today, you probably have to use Ajax calls to the database and then create your own "least filled bucket" system via Expression Manager. Maybe Denis' plugin getStatInSurvey (
framagit.org/SondagePro-LimeSurvey-plugin/getStatInSurvey
) might allow to read the responses given to a certain answer already and maybe you can create a workaround based on that. I remember there was a thread where someone has created a "Least filled bucket" system for them internally on their installation.
Or the simple workaround: When one "quota" is full, adapt your script that draws the random number and/or the respective relevance equations.
Some here use a bigger range of random numbers. E.g. even if you need only 4 "buckets" you could draw random numbers from 1-40 and at the beginning asign 1-10, 11-20, 21-30 and 31-40 to the respective "buckets". Then you have more flexibility to adapt your random assignment.
I know, nothing out of the box, not really the answer you would have hoped for, but that's what can be done with LS regarding this at the moment, as far as I know.