If you try to add the same code into a constructed list, Sawtooth Software will automatically "or" the two codes resulting in only one of that code appearing.
You have the following code under the else statement ...
INSERT (1, "CarModels", $random_numberA);
INSERT (2, "CarModels", $random_numberA);
These two instructions will simply add the same code twice resulting in it appearing only once.
Note the following list building rules which I extracted from the Sawtooth Software HELP ...
#Note point 4.
Rules Governing List Operations ...
1. All constructed lists are initially empty.
2. All members added to a constructed list must come from a common parent list.
3. You may add members from another constructed list to a constructed list, as long as both constructed lists share the same parent predefined list.
4. A member can only appear once in the constructed list (if you try to add a member after it already exists on a constructed list, it will not be added again).
5. List building commands are executed sequentially.
6. A question using an empty constructed list (as response options) is skipped.
When you view questions involving constructed lists in Preview mode, all members from the parent list are displayed (since we don't know how the respondent has answered previous questions).
I'm struggling to understand why you want to insert the same code in positions 1 and 2? If you wanted to, there is another way around it. You can define a new parent list with codes defined as ...
Does this help?