We all know that is quite different form , especially when evaluating students who are just learning the distributive property. Why, then, will textbook question banks generate those two different problems on different versions of the same quiz? That makes it quite difficult to properly diagnose where each student is with the material.

This question bank serves to keep a parallel structure with all generated problems. For example, if one quiz has , another one could have with the positive and negative values in the same place.

So, let’s take a look at how to create these dynamic questions in ExamView. First, we will create some simple distributive property problems where the variable has a coefficient of one, e.g. .

Start by creating a new problem. I generally use short answer for all question banks. There are several variables we will need to set, so first, choose *Algorithm Definitions* from the *Edit* menu.

### Creating a random variable using *list* and *choose*.

I like to start with randomly generating a variable instead of using all the time. Click, NEW, and leave the default *Type:* variable. You can call it almost anything you want, but I will call it “letters.”

#### The List Definition

The “Definition” for letters will be a “list.” Essentially, it is just a list of text strings separated by commas. Most importantly, each string must be contained in quotes and the commas are between the quoted items in the list. Thus,** list(“a”,”b”,”c”,”d”,”m”,”n”,”w”,”x”,”y”,”z”)** is the definition for letters.

#### Choose from a List

Now, we need to choose one of the items from that list. The use of list and choose is a really useful technique, and you will see some other situations where you can use it to pick random items for word problem or student names to make word problems more personal and interesting.

Notice, there are ten items in the *letters* list. That means we need to get a random number from 1 to 10. There are several ways to do this. One method is to use the *range* function, but in this situation *rand *will be a bit more straightforward. We will revisit *range *in numerous other scenarios.

Create a new algorithm, type:variable, and not to be too confusing, but we will call it “variable.” You could really call it whatever you want, but just be sure to remember what you call it. The definition will use both *choose *and *rand*: **choose(rand(10),letters)**.

### Creating the constants

The distributive property problem will be in the format . The variable is set, so we now need values for *k* and *c*. Each of these will be essentially the same process. We will use the *range* function for each. *Range *simply picks a number between two values. There is an optional *step* parameter, and the default is 1. For *k*, create a new variable, call it *k*, and use this definition: **range(2,4)**. If you use **range(2,4,1)**, that serves the same purpose but specifically identifies the step as 1. In the *format *pull down list, choose *Coefficent (1st)*. This will take care of putting a “-” in front of a negative value or leaving off the “+” from a positive value. Of course, we know it is positive for this problem, but if we copy this problem in order to create a new one, that will come in handy (see part 2).

Then, create another variable, *c*, and use **range(2,5)** for the definition. The format for *c* is important. Be sure to choose coefficient from the pull down list. This will automatically take care of the + or – when formatting the problem. Naturally, you can specify whatever range of values you wish, but I like to keep the multiplication pretty simple when assessing comprehension of distribution.

#### Summary so far . . .

At this point, we have a variable called *variable* which will use one of the letters from the list of ten. We have two other variables, *k *and *c*, which are numerical values. There are two remaining, important steps. One, we need to compute the answer. Two, we need to display the problem and solution with math formatting.

#### Computing the answer

There is only one computation necessary for this problem, multiplying *k *and *c*. Create a new variable and call it *productkc*, or anything you want. The definition is a simple multiplication function: **k*c**. Choose *coefficent *as the format. That’s it for that.

### Formatting the problem and answer

Go ahead and close the algorithm window if you have not done so already. Notice there are two empty boxes for the problem: *Question* and *Answer*. With your cursor in the *Question *box, go to the *Insert *menu and choose *Equation*. A handy shortcut is CTRL-E, which is something you will probably want to get ingrained pretty quickly.

Now, with the *Equation Editor *open, we can have the distributive property problem formatting nicely. Start by clicking the *Insert Variable *button. Pick *k *from the list, and okay. Then, type “(” and pick the next variable, *variable*. Do this again by picking *c*. Notice, we are not adding a “+” between the terms. That will be taken care of by *c* being specified as a coefficient. Finally, type the closing parentheses, “)”. Click the *Record *button.

For the *Answer *box, follow the same process. CTRL-E to insert an equation. Insert variable: insert *k*, then insert *variable*, then insert *productkc.*

### The next steps . . .

In part 2, we will look at adding versions with negatives in all combinations of the three places. In part 3, add a coefficient for the variable!