FINGER EXERCISES: [discuss at least some Fri Sept 13] 1. Many pseudo-random number generators on the computer can be though of as "function iteration schemes": Starting with a seed x0, the random number generator generates successive numbers x1, x2, x3, .. as follows: x1 = f(x0) x2 = f(x1) x3 = f(x2) etc where f(x) is some numerical function defined by the code for the random number generator. (The idea of designing a good random number generator is to find a function f() such that the sequence x0 x1 x2 ... passes a variety of statistical tests for "randomness"). Prove rigorously that any actual pseudo random number generator of this form can produce only a finite sequence of x's before repeating itself. State and justify any reasonable assumptions you make in your proof. 2. Prove that any computer program, no matter how complicated or on what digital computer, can produce only a finite number of different outputs. State and justify any reasonable assumptions you make in your proof. 3. Suppose dataframe "mydata" has m columns of numerical data. Write a function "histos" in S, that takes "mydata" as an argument and produces an approximately square array of histogram plots in a single motif() or x11() window. You don't know m in advance, so you have to figure out, inside your function, what "square array of histogram plots" means, for each possible m. Demonstrate that your function works with a few different made-up data frames. [to make up a dataframe: mydata _ as.data.frame(matrix(rnorm(I*J),ncol=J)) ] 4. "Machine epsilon" is the smallest number e such that 1+e>1. Write some lines of code in S (possibly but not necessarily in a function) that explores for and finds machine epsilon for S, by adding several small values to 1 and seeing if the result equals 1.