How do you see something? (If you want to...)
You need a Java 1.1 capable Viewer for the Bernoulli Board,
especially because it uses the ActionEvent scheme of 1.1. HotJava1.0
may work, and also any appletviewer of an 1.1.* JDK.
What do you see? (If you see anything...)
The Bernoulli Board is an experiment for simulating a discrete
binominal distribution. It consists of a set of wooden cylinder,
where a marble is dropped. With a specific probability the marble
will fall to the left or to the right side. Normally the cylinder are
cascadated, and it is assumed that the marble will fall from each
cylinder with the same probability. With more than two lanes you may
see a nearly symmetrical discrete binominal distribution of the marbles
within the lanes at p=0.5, an asymmetrical at a p different from 0.5.
What is it for?
With the application you can test the internal or a self made
random generator for distribution errors or other inconsistencies.
The most simple experiment will be if you choose one wooden cylinder and
two lanes. At p=0.5 the marble will fall to the left side if the
random generated (double) number is less or equal p. At an infinite number
of marbles the two lanes should be equally filled and the resulting
mean value should be 0.5. If it does not, the random generator has a
regular error.
Where does it come from?
In the 17th century Jacob Bernoulli (1654-1705) invented the
Bernoulli numbers and worked on distribution problems. Sir Francis Galton
(1822-1911) invented the board with the cylinder and shots to visualize the
binomial distribution. Therefore this board is also called Galton Board.
I once build a Bernoulli Board after a more inspiring math
lesson with a wooden board, a round bar (4cm in diameter) cut into
pieces and a thinner ledge divided into pieces for seven lanes and a
guiding lane at the top. The practical problem with such a tool is, that
normal glass marbles have slightly different diameter, but the cylinder have
to be glued very accurate to let the marbles fall with equal probabilities
to the right or left. Practically its more probably that they fall
to the middle lanes.
The first program for this experiment I wrote on an AtariST in ancient times
(1987) with LineA routines for testing the internal and my own random number
generators because for programming games on the AtariST it was difficult to get
real random numbers. It wasn't that fast as the Java applet, but I had added
more animation steps inbetween and the ability for more marbles falling at
once. (On the other hand the number of lanes and the diameter of the objects
were fixed and the display was monochrome.)
What are the controls for?
The first button "Start!" starts a new run and resets the counters.
The second button "Stop!" stops the current run and will display some
statistics, for instance d as the mean value of the weighted marbles
fallen, the total number of marbles fallen into each lane ("0=", "1=", ...)
and the theoretical number of marbles for each lane if the probability
wasn't change for one run ("1'=", "2'=",...). The statistics will be
deleted for the next "Start!" or "Continue!"
The third button "Continue!" will continue the current run without
resetting the counters. You can press "Continue!" also for refreshing the
display of the applet.
The choice dial lets you change the probability for the marbles. After
changing it its normally useful to start a new run, but for playing around
you can change the value within a run anytime.
The slider lets you change the speed of the falling marbles.
What else can you do?
Within the source, there are three finals you can change for some other
board layouts: "walzend" for the diameter of the cylinders, "kugeld" for the
diameter of the marbles and "lanes" for the number of lanes. The number of
lanes must be more than 1 and less than 21, the diameters of the cylinders
and the marbles should be an even number. For recompiling the Bernoulli Board
you'll need a Java 1.1 compliant compiler, best if better than 1.1.3.
On the other hand... you can do whatever you like with the source...
for instance making it more flexible for resizing, improving the animation
of the dropping marbles, adding more colors, more statistics, audio,
more gimmicks...
-- jd --