Generate random number as condition

Mehr
9 Monate 5 Tage her - 9 Monate 5 Tage her #173812 von Pernelle
In my survey, I have 12 hidden questions that generate a random number between 1 and 4 which determine which of the four subquestions in the 12 following questions will be displayed to the participant.
To do this, I use a hidden question of the type:
if(DispRec1 >= 1, DispRec1, floor(rand(1, 4.9999)))

and then in the following question, each subquestion has a condition of the type:
((( ! is_empty(321522X4X36.NAOK) && (321522X4X36.NAOK == 2))))


I have collected data from more than 1000 participants so far, and I realise that the 4th condition is largely underrepresented (so the number 4 is not generated as often as the 1, 2, and 3).
Do you know why and how to solve this?

Note that I now use Version 3.7.3+180516, but I developed it in a previous version, where I was advised to use " 4.9999" for the last randomly generated number. Maybe that is the problem, in version 3?

Thank you.
Letzte Änderung: 9 Monate 5 Tage her von Pernelle.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LimeSurvey Partners
Mehr
9 Monate 5 Tage her #173814 von jelo
Without having the complete survey (LSS export) it looks impossible to me to check for issues.
Perhaps someone will invest the time to ask questions without looking at the actual survey, but the chances will be narrow.

You generate random numbers with hidden equation question
E.g. DispRec1 is:
if(DispRec1 >= 1, DispRec1, floor(rand(1, 4.9999)))

And if you look at the saved values, you see 1-3 way more often than 4?

Which PHP version and OS is used? You can >>>click<<< on the LimeSurvey version number at the bottom to get a window with more infos about your installation.

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 5 Tage her #173819 von tpartner
Why are you using floor()? Why not simply rand(1, 4)?

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Official LimeSurvey Partner - partnersurveys.com

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 5 Tage her #173820 von jelo

tpartner schrieb: Why are you using floor()? Why not simply rand(1, 4)?

You're right for PHP, but I still find the common floor approach (used for non integer rand functions) in the manual. E.g. manual.limesurvey.org/Expression_Manager...e_Question_Per_Group

At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field


BTW: Starting with PHP 7.1 rand() should be delivering a good quality of random numbers.

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 5 Tage her #173821 von Pernelle
Thank you both for your quick reactions.

Here is the LSS survey structure.

I used floor because I found this in the manual, indeed.

Regarding my system configuration:


LimeSurvey version
3.7.3
LimeSurvey build
180516
Operating system
Linux ks01.sl-services.be 4.9.58-xxxx-std-ipv6-64 #1 SMP Mon Oct 23 11:35:59 CEST 2017 x86_64
PHP version
7.0.22-0ubuntu0.16.04.1
Web server name
survey2.sl-services.be
Web server software
Apache
Web server info
Database driver
mysql
Database driver version
mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $
Database server info
Uptime: 9958600 Threads: 1 Questions: 9808849 Slow queries: 0 Opens: 167322 Flush tables: 1 Open tables: 416 Queries per second avg: 0.984
Database server version
Uptime: 9958600 Threads: 1 Questions: 9808849 Slow queries: 0 Opens: 167322 Flush tables: 1 Open tables: 416 Queries per second avg: 0.984
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 5 Tage her #173822 von Pernelle
"And if you look at the saved values, you see 1-3 way more often than 4?"

--> that's right

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 5 Tage her #173824 von jelo

Pernelle schrieb: "And if you look at the saved values, you see 1-3 way more often than 4?"
--> that's right

Without seeing the complete survey, I would say "It's the way it is".

In percentage, what distribution is on the 12 random generator questions?

1 more than 2 more than 3 more than 4.

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 5 Tage her - 9 Monate 5 Tage her #173825 von Pernelle
Overall, the distribution of the four numbers generated over the 12 stimuli for all the participants are:

1: 413 (30%)
2: 389 (29%)
3: 373 (27%)
4: 188 (14%)

--> You can see that 1, 2, and 3 have similar frequencies, but 4 is much lower
Letzte Änderung: 9 Monate 5 Tage her von Pernelle.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 1 Tag her #173950 von Pernelle
I realised that the frequencies I reported above were for only a subset of the sample. But the actual frequencies are very similar (and as unbalanced, hence as problematic):

1: 3781 (28%)
2: 3775 (28%)
3: 3710 (28%)
4: 8388 (16%)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 1 Tag her - 9 Monate 1 Tag her #173955 von jelo
Why is 8338 16% and 3710 28%? How do you get these numbers?

Without seeing the complete survey to investigate I have nothing to add.
If it's not an issue in the survey structure (still can trigger a bug in LimeSurvey), it's an issue around PHP.

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users
Letzte Änderung: 9 Monate 1 Tag her von jelo.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 1 Tag her - 9 Monate 1 Tag her #173972 von Joffm
Hi,

First I tried to check if there is an issue with your formula.
In a small test survey I entered 100 answers.
With your formula: floor(rand(1,4.999)) I got

and with simple:rand(1,4) I got


So, it is not the worst distribution and there is no difference between the formulas.

But then looking into the programming: I found this:
In both Chinese languages there is:

{if(DispRec1>=1,DispRec1,floor(rand(1,3.9999)))}





So it's just a typo on your side.

Joffm


Volunteers are not paid.
Not because they are worthless, but because they are priceless
Letzte Änderung: 9 Monate 1 Tag her von Joffm.
Folgende Benutzer bedankten sich: f_funke

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 1 Tag her #173976 von jelo
Upps. Sorry, just overlooked that the LSS export was attached. Nice catch, Joffm.

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
9 Monate 1 Tag her #173977 von Pernelle
Many thanks for this, Joffm! I don't know how I could overlook this! Thanks a lot!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Jetzt loslegen!

Melden Sie sich jetzt an, und erstellen Sie in wenigen Minuten Ihre erste Umfrage.

Account einrichten

Abonnieren Sie unseren Newsletter

Abonnieren Sie unseren Newsletter für alle Neuigkeiten rund um LimeSurvey
captcha