Use Randomized Values from a Table

You can use the WebAssign randomization functions to select values from a table stored as a two-dimensional array. This is particularly useful in subjects like chemistry where simple substitution of independent values like a coefficient is often not possible.

  1. If needed, open your question in the Question Editor.
    If Do this
    You know the question ID or name
    1. In the search box at the top of the page, select Question.
    2. Type the question name or ID and press Enter.
    You own the question
    1. Click Questions > My Questions.
    2. Click the question name.
    You organize your questions in folders
    1. Click Assignments > Folders and navigate to the folder with the question.
    2. Click the question name.
    You want to use advanced search
    1. Click Questions > Search Questions.
    2. Enter the search criteria you want to use.

      To view only your questions, click me next to Author.

    3. Click Search.
    4. If you own the question, click Edit next to your question.

      If you do not own the question, click View, then click Open in Editor under Previewer Tools.

  2. Store question values that you want to choose from in a Perl array.
    Note Use the WebAssign @dat array to view the values as a table in the Question Previewer.
  3. Use WebAssign randomization functions to select values from the array to use in your question.
    Best Practice Select index values between 0 and $#dat. This ensures that the index is valid even when you add or remove rows from the @dat array.
See the examples and prerequisite topics for specific information.

Example Question Using Array and Randomization

The following table summarizes an actual question.

QID
1950001
Name
Template2 RAND.ARRAY
Mode Multiple-Choice
Question
<eqn>
# weight in Newtons
$weight = randnum(495,940,1);

# calculate weight on other planets
@dat = ( ['Mercury' , decform($weight * 0.348, 0) ],
         ['Venus'   , decform($weight * 0.907, 0) ],
         ['Mars'    , decform($weight * 0.377, 0) ],
         ['Jupiter' , decform($weight * 2.364, 0) ],
         ['Saturn'  , decform($weight * 1.064, 0) ],
         ['Uranus'  , decform($weight * 0.889, 0) ],
         ['Neptune' , decform($weight * 1.125, 0) ] );

# pick three indices for @dat
@selected = pick(3, 0..$#dat);
''
</eqn>
If you weighed <eqn $weight> N on Earth:<br>
<ul>
<li>Your weight on <eqn $dat[$selected[0]][0]> would be <eqn $dat[$selected[0]][1]> N</li>
<li>Your weight on <eqn $dat[$selected[1]][0]> would be <eqn $dat[$selected[1]][1]> N</li>
<li>Your weight on <eqn $dat[$selected[2]][0]> would be <eqn $dat[$selected[2]][1]> N</li>
</ul>
On which planet would your mass be the least? <_>
Answer
<EQN $ORDERED=5; 'Earth'>
<EQN $dat[$selected[0]][0]>
<EQN $dat[$selected[1]][0]>
<EQN $dat[$selected[2]][0]>
Your mass would be the same
Display to Students
Question as displayed to students

Randomized chemPad Example Using a Table

The following table summarizes an actual question.

QID

1931882

Name

Mode

Fill-in-the-Blank

Question

<eqn>
@dat = (
  ['2 CO + O_2 ->','2 CO_{2}'],
  ['2 H_2 + O_2 ->','2 H_{2}O'],
  ['4 Fe + 3 O_2 ->','2 Fe_{2}O_{3}'],
  ['SO_2 + H_2O_2 ->','H_{2}SO_{4}']
);
# pick an index to use for the array
($a) = pick(1,0..$#dat);
''
</eqn>
Complete and balance the following chemical equation. <br />
<h:reaction><eqn $dat[$a][0]></h:reaction> <br />
<_>

Answer

<EQN $PAD='chem'; $CHEM='fmla'; $dat[$a][1]>

Display to Students

Question as displayed to students

Example Multiple-Select Question with a Random Number of Correct Answers

The following table summarizes an actual question.

Note In this example, the second column of @dat displays as ARRAY(0xnnnnnnnn) in the Array tab of the Question Previewer. This is because the answer key is stored as an array within the @dat array.

QID

1930563

Name

Mode

Multiple-Select

Question

<eqn>
@dat = (
  ['white',[1,3,4]],
  ['yellow',[1,3]],
  ['magenta',[1,4]],
  ['cyan',[3,4]]
);
($a) = pick(1,0..$#dat);
''
</eqn>
What primary colors of light can be combined to make <eqn $dat[$a][0]> light?<br>
<_>

Answer

<EQN $ORDERED = $dat[$a][1]; ''>red
indigo
green
blue
orange

Display to Students

Question as displayed to students