# Class 26: Randomness and Simulation

Back to Sorting Laboratory. On to Program Input.

Held: Tuesday, 4 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:

Assignments:

Notes:

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, 15 January 2003 [Samuel A. Rebelsky]

• Created as a mostly-blank outline.

Back to Sorting Laboratory. On to Program Input.

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

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

Samuel A. Rebelsky, rebelsky@grinnell.edu