CS 1005, C Term 2000
Techniques of Programming
Lab 5 (Feb. 16)
Instructions
In this lab you will use a random number generator to produce
random points in an n-dimensional cube. In other words, you
will implement the RandPoint function needed in HW3. You will
also test this function within a Monte Carlo simulation to
estimate the area of a two-dimensional region bounded by curves
(if you know calculus, you will recognize the area as the integral
between x=0 and x=1 of the function f(x)=x2).
A sample run of the finished program is available
here. For a very brief introduction
to Monte Carlo simulation, see the statement of HW 3.
- Sign in with the TA. You should both print your name
and sign the sheet.
- Listen to the TA's mini-lecture.
- Do the problems listed below. Feel free to ask the TA
questions about the problems. Don't worry if you can't
finish all of the problems before the lab session is over.
You can finish afterwards. However, actively working
on the lab assignment during the lab session is required.
Problems
-
Log onto your CCC Unix account.
Change the working directory to your CS1005 directory.
Create a subdirectory named Lab5 and change the working directory to Lab5.
Copy the files named lab5.cxx, randgen.h, and randgen.cpp
from the /cs/cs1005/samples/lab5/ directory to your Lab5 directory.
-
Study the file named lab5.cxx. This file contains a skeleton for
the Lab5 assignment. Notice the typedef near the top of the file.
This typedef declares the identifier point to be a synonym
for the type vector<double>. The main() function
prompts the user to enter an integer n and proceeds to carry
out n Monte Carlo steps. Each step consists of generating a
random 2D point and incrementing a hits counter if the point
lies within the target region, which for Lab5 is the set of all
points (x,y) such that 0 < x < 1 and 0 < y < x2.
The program then reports the Monte Carlo estimate of the area
of the target region.
-
Fill in the missing statements in main() in a way that's consistent
with the above description of the behavior of the program. Then
implement the function named RandPoint. Use the RandReal member
function for the latter purpose. You will need to define an object
of type RandGen and an object of type point of the appropriate size;
invoke RandReal on the RandGen object once for each coordinate of
the point to be generated and place the resulting random number
in the appropriate position of the point object; when all positions
have been filled, return the resulting point object.
-
Compile your program using the following command line:
g++ -o lab5prog lab5.cxx randgen.cpp
Debug your program as needed.
Try out your program for different numbers of Monte Carlo iterations.
-
Use any remaining time to continue working on HW3.