I got a problem and couldn't fix it. I have two different questions and i want to randomize the two questions, that means I want one question(either of the two) randomly picked and asked at a time. I can randomize an option but i cant randomize questions.
Can you help me?
You may want to implement this strategy for the situation: Develop 3 forms, one for the randomization (say Form A), the other two are the main questions that you want to administor randomly (say Form B & C). Forms B & C are hidden so that enumerators don't see them in the app. They see Form A instead. From From A, depending on the random value, B or C will be displayed.
What @Trung describes is not possible in ODK and does not sound convenient for a small number of questions to randomize. The recommended strategy is similar but within a single form.
You can create groups for each order that you might want to display to the user, generate a random number, and use that random number to pick one of the orderings. Here is a form that shows the strategy with two questions. Note that a dynamic default is used to ensure that the random value is stable across multiple opens of the same form instance.
There has been some discussion of adding a dedicated feature for this purpose at Randomizing Lists or Questions within Groups.
Thanks @LN , your strategy is perfect for a small number of questions to randomize.
One potential issue, though: if we use default with random() like that, we might have the random number changed if user opened a saved incomplete version.
The behavior you describe is what would happen if we defined a
calculation instead of a
default. Please read the documentation about dynamic defaults that I linked to for more details.
Thanks @LN . I missed the word
once in this sentence "Dynamic defaults as described in this section are evaluated once on record creation."
Thank you very much for your response. yeah it works, but i want one question randomly picked and show once at a time. the example you give me is it randomize the questions only, but what i want is if question A is asked i want question B to be hidden. if question B is asked i want question A to be hidden. Can you help me please?
Try something like this:
randomquestion.xlsx (8.5 KB)
Basically, generate a random number using random(), and then use this value in relevant expressions on each question to determine whether to display that question or not. If the ranges are mutually exclusive - eg 2 questions, with <0.5 and >=0.5 - then only one question will get displayed. You can optionally adjust the ranges to change the weight/frequency each question appears...