Fundamentals of Computer Science 1 (CS151 2003S)

Randomness and Simulation

Summary: In this laboratory, you will explore that random procedure using some fun Web services.


Exercise 0: Preparation

a. Make a copy of in your public_html directory.

b. Make the corresponding CGI script.


c. Share the CGI script and make it executable.

% share
% share dicegame.cgi
% chmod a+x dicegame.cgi

d. Start DrScheme and load

e. Read through the procedures and make sure you understand what they do.

Exercise 1: Experimentation

Verify that the dicegame.cgi script works.

Exercise 2: Improving Code

Linda and Larry Leter have become addicted to the idea of putting lets around lambdas. Hence, they'd like to change the definition of pair-a-dice to

(define pair-a-dice
  (let ((dice (list (roll-a-die) (roll-a-die))))
    (lambda () dice)))

a. What do you think about their idea?

b. Test their change from within DrScheme by repeatedly rolling a pair of dice (using pair-a-dice). Do you notice anything interesting about the results?

c. Test their change on the Web. Do you notice the same change? Why or why not?

Exercise 3: Speeding Up the Game

Update so that it reports the result of 10 rolls (or perhaps a user-selectable number of rolls) each time, rather than a single roll.

Exercise 4: Favoring the House

a. Update play-even-odd so that the house wins $2 rather than $1 if the dice are odd.

b. Can you foresee any problems that might occur with this change? If so, which ones?

c. Experiment ot see if your claim is correct.

Exercise 5: Seven or Eleven

Update so that the player wins if the two dice total 7 or 11 rather than an odd number.

Exercise 6: Or Doubles

Update so that the player wins if the two dice total 7 or 11 or if both dice have the same value.

Exercise 7: Changing Bets

Update so that the player can choose the amount to bet.

Exercise 8: Flipping Coins

Update so that the game is based on flipping coins, rather than rolling dice. (You can choose an appropriate game.)



Thursday, 19 September 2002 [Samuel A. Rebelsky]

Friday, 20 September 2002 [Samuel A. Rebelsky]

Monday, 4 November 2002 [Samuel A. Rebelsky]

Monday, 3 March 2003 [Samuel A. Rebelsky]


Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Tue May 6 09:29:10 2003.
The source to the document was last modified on Mon Mar 3 09:32:45 2003.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Samuel A. Rebelsky,