COS 126 Conditionals and Loops |
Programming Assignment |
The goal of this assignment is to write five short Java programs to gain practice with loops, conditionals, and arrays.
% java Bits 0 % java Bits 8 0 4 % java Bits 1 % java Bits 16 1 5 % java Bits 2 % java Bits 1000 2 10 % java Bits 4 % java Bits -23 3 Illegal input
Remark: This computes the number of bits in the binary representation of N, which also equals 1 + floor(log2 N) when N is positive. This quantity arises in information theory and the analysis of algorithms.
% java Checkerboard 4 % java Checkerboard 5 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
% java RandomWalker 10 % java RandomWalker 20 (0, -1) (0, 1) (0, 0) (-1, 1) (0, 1) (-1, 2) (0, 2) (0, 2) (-1, 2) (1, 2) (-2, 2) (1, 3) (-2, 1) (0, 3) (-1, 1) (-1, 3) (-2, 1) (-2, 3) (-3, 1) (-3, 3) squared distance = 10 (-3, 2) (-4, 2) (-4, 1) (-3, 1) (-3, 0) (-4, 0) (-4, -1) (-3, -1) (-3, -2) (-3, -3) squared distance = 18
% java RandomWalkers 100 100000 % java RandomWalkers 400 100000 mean squared distance = 100.15086 mean squared distance = 401.22024 % java RandomWalkers 100 100000 % java RandomWalkers 800 100000 mean squared distance = 99.95274 mean squared distance = 797.5106 % java RandomWalkers 200 100000 % java RandomWalkers 1600 100000 mean squared distance = 199.57664 mean squared distance = 1600.13064
As N increases, we expect the random walker to end up farther and farther away from the origin. But how much farther? Use RandomWalkers to formulate a hypothesis as to how the mean squared distance grows as a function of N. Use T = 100,000 trials to get a sufficiently accurate estimate.
Remark: this process is a discrete version of a natural phenomenon known as Brownian motion. It serves as a scientific model for an astonishing range of physical processes from the dispersion of ink flowing in water, to the formation of polymer chains in chemistry, to cascades of neurons firing in the brain.
Remark: a classic result from probability theory (central limit theorem) asserts that the shape of the resulting histogram is well-approximated by the ubiquitous bell curve (Gaussian distribution).
% java TenDice 1000 10: 11: 12: 13: 14: 15: 16: 17: 18: * 19: **** 20: 21: *** 22: ****** 23: ******** 24: **************** 25: ************* 26: ********** 27: ********************************* 28: **************************************** 29: ********************************* 30: *************************************************** 31: ***************************************************************** 32: ******************************************************** 33: ************************************************************************************** 34: *********************************************************** 35: ********************************************************************* 36: *********************************************************************************** 37: ************************************************************** 38: ***************************************************************** 39: *************************************** 40: ***************************************************** 41: ************************************ 42: **************************** 43: ************************ 44: ************************ 45: ********* 46: *********** 47: ******* 48: *** 49: ** 50: 51: 52: * 53: 54: 55: 56: 57: 58: 59: 60:
Submission.
Submit the files Bits.java, Checkerboard.java,
RandomWalker.java, RandomWalkers.java, and TenDice.java.
Finally, submit a readme.txt
file and answer the questions.