# Class 25: Simulation

Back to Local Procedure Bindings. On to Pairs.

Held: Monday, 3 March 2003

Summary: Today we consider how to make Scheme simulate potentially unpredictable events, like the rolling of dice or the flipping of coins.

Related Pages:

Notes:

• How many of you are planning to miss the class on Friday, 14 March?
• I've graded homework 2. You should have received your grade in the mail. I've also written some notes on the assignment.
• Are there questions on homework 3?
• I see that some of you answer questions that read compute the following by writing a procedure. You don't always need to write procedures.
• I've received an interesting email about students using images in their CS151 projects. So ... don't use other people's images.
• I've graded exam 1. We'll spend a few minutes going over key issues.

Overview:

• The Problem of Simulation.
• Scheme's `random` procedure.
• Simulating the roll of dice.
• Lab.

## Simulation

• At times, we write programs to model real-world situations:
• The effect of pollutants on a lake
• The waiting time in line at Wal-Mart
• The playing of a card or dice game
• Each of these situations has some aspect of unpredicatability (even if we ignore the butterfly flappings of chaos theory)
• Can we write such programs in Scheme?

## Random

• Scheme provides a simple procedure, `random`, to provide some fodder for simulations and any other times that you want to play with unpredictable behavior.
• `(random n)` produces an "unpredictible" number in the range [0 .. n-1].
• That's all you need to know right now.

## Dice

• Here's a simple simulation problem: Simulate the roll of a single six-sided die.
• Yes, die is the singular of dice
• Here's one possibility
```(+ 1 (random 6))
```
• See the reading for an alternative.

## History

Thursday, 16 January 2003 [Samuel A. Rebelsky]

• First version, created mostly automatically from previous course.

Back to Local Procedure Bindings. On to Pairs.

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:56 2003.
The source to the document was last modified on Thu Jan 16 13:45:58 2003.
This document may be found at `http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2003S/Outlines/outline.25.html`.

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

Samuel A. Rebelsky, rebelsky@grinnell.edu