Question2. The Public Service Answering Point (PSAP) in San Francisco employs \(19\) operators in \(8\)-hour shifts to process \(911\) calls. There are at least \(5\) operators always answering calls. The number of calls processed per operator can be modeled with a Poisson random variable with rate \(\lambda_0 =20\) calls per hour.

Quesion 2 (a) What is the probability an operator can process 20 calls in an hour? Repeat for 30 calls in an hour?

#Answer 2a
lambda<- 20
probTwenty<- dpois(20,lambda)
probThirty<- dpois(30, lambda)

probTwenty
[1] 0.08883532
probThirty
[1] 0.008343536

Quesion 2 (b) Given that 240 calls occurred in an hour, what is the probability that the ten operators can process them all assuming they are split equally among the operators?

#Answer 2b
prob24Calls<- dpois(24, lambda)
prob240Calls<- prob24Calls^10
prob240Calls
[1] 2.892317e-13

Quesion 2 (c) Now, If the aggregate call rate per hour \(\lambda_c\) , is measured by \(\lambda_c = 85\) calls per hour, what is the probability of more than \(100\) calls in an hour

#Answer 2c
lambda_c<- 85
moreThan100<- 1-ppois(100,lambda_c)
moreThan100
[1] 0.04934533

Question 3. For the two random number generator below A and B(don’t forget to add your R code)

- [A] \(Z_i = (9Z_{i-1} + 1) \mod 16\) with \(Z_0 = 5\).

- [B] \(Z_i = (7Z_{i-1} + 3) \mod 32\) with \(Z_0 = 10\),

Quesion 3 (a) Compute \(Z_i\) and \(U_i\) for values of \(i\) until a number is repeated, what is the period of both the generator? Provide your comments about the period of both RGN

#Answer 3a
Z_A <- 5
periodA <- 0
U_A_values <- numeric()

Z_B <- 10
periodB <- 0
U_B_values <- numeric()

scatter_A <- list()
scatter_B <- list()

nextA <- function(Z) {
  return((9 * Z + 1) %% 16)
}
nextB <- function(Z) {
  return((7 * Z + 3) %% 32)
}

while (TRUE) {
  Z_nextA <- nextA(Z_A)
  U_A <- Z_nextA / 16
  periodA <- periodA + 1
  U_A_values <- c(U_A_values, U_A)
  scatter_A[[periodA]] <- U_A_values
  
  if (Z_nextA %in% U_A_values) {
    break
  }
  
  Z_A <- Z_nextA
  
  Z_nextB <- nextB(Z_B)
  U_B <- Z_nextB / 32
  periodB <- periodB + 1
  U_B_values <- c(U_B_values, U_B)
  scatter_B[[periodB]] <- U_B_values
  
  if (Z_nextB %in% U_B_values) {
    break
  }
  
  Z_B <- Z_nextB
  


}
cat("Period A: ", periodA)
Period A:  11
cat("\n")
cat("Period B: ", periodB)
Period B:  10

The period is the number of values that were generated before a repeat occured.

Quesion 3 (b) Which of these parameters effect the period of LCG – \(a\), \(b\), \(Z_0\)

#Answer 
cat("The parameters a and b can affect the period. Changing these values can vary the amount of values that are generated before a repeat.")

Quesion 3 (c) For both generators plot a scatter diagram of the Zi values 1 apart. What are your observations from these plots? What do you think about the property of randomness of these generators?

#Answer
plot(unlist(scatter_A[[1]]), unlist(scatter_A[[2]]), main = "Scatter Diagram A")
Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' and 'y' lengths differ

Quesion 3 (d) Randomness of default random generator of R – Run runif command to generate 100 random numbers and plot the scatter diagram of these numbers ( values 1 apart) and discuss your observations about randomness of this random generator.

#Answer
random_numbers <- runif(100)
plot(random_numbers[-100], random_numbers[-1], main = "Scatter Diagram R")

cat("The randomness of this generator is truly random as seen in the scatter plot. The values are dispersed across the whole range of Scatter Diagram R")
The randomness of this generator is truly random as seen in the scatter plot. The values are dispersed across the whole range of Scatter Diagram R

Quesion 3 (e) Compute the mean value of \(U_i\) across the period

#Answer
meanA <- mean(U_A_values)
meanB <- mean(U_B_values)
meanA
[1] 0.5056818
meanB
[1] 0.371875

Quesion 3 (f) By providing a plot of density (histogram) discuss the uniformity of both of the generators

#Answer
hist(U_A_values, main = "Histogram of Generator A", xlim = c(0, 1))

hist(U_B_values, main = "Histogram of Generator B", xlim = c(0, 1))

cat("While the frequencies between the two generators changes for some values, the frequencies of both are still within the same range. ")
While the frequencies between the two generators changes for some values, the frequencies of both are still within the same range. 

Question 4. Using the inverse transform method

Question 4.(a) Develop an algorithm for the random variable with cumulative distribution function F(x) below.

\[ F(x) = 1 - e^{-(x/\lambda)^k} \]

where \(x \geq 0\), \(\lambda \geq 0\), and \(k \geq 0\).

# Answer 4a
# This might be hard to print using R - you can write the step in your notebook and then include image here / or you can include as seperate file when upload

# Check if the IRdisplay package is already installed
if (!require(IRdisplay, quietly = TRUE)) {
  # If not installed, install it
  install.packages("IRdisplay")
  
  # Load the IRdisplay library
  library(IRdisplay)
} else {
  # If already installed, just load the library
  library(IRdisplay)
}


# Embed an image
#display_png(file = "example.png")

Quesion 4 (b) Use the first three Ui values from part (a) and generator [A] of previous problem to create 3 values from the random variable when, \(\lambda = 1\), \(𝑘 = 5\)

#Answer

Quesion 4 (c) sing R generate 10,000 values from your algorithm when = 1 , 𝑘 = 5 and plot a histogram of the density. Discuss what insights you obtain when you look at the plot generated here vs the plot you generated in question 3 (e)

#Answer

Question 5. Develop a Monte Carlo simulation in R that counts the number of uniform [0,1] random numbers that must be summed to get a sum greater than 1. Run a single simulation with n = 10,000 times and find the mean of the number of counts. Do you think this number looks somewhat familiar. Every student might get slightly different value any ideas why?

#Answer
sims<- 1000
counts<- numeric(sims)

for(i in 1:sims){
  sum<-0
  count<-0
  
  while(sum<=1){
    rand<-runif(1)
    sum<-sum+rand
    count<- count+1
  }
  counts[i]<-count
  
  meanOfCount<-mean(counts)
  cat("mean number of counts: ", meanOfCount, "\n")
 
}
mean number of counts:  0.002 
mean number of counts:  0.005 
mean number of counts:  0.009 
mean number of counts:  0.013 
mean number of counts:  0.015 
mean number of counts:  0.017 
mean number of counts:  0.019 
mean number of counts:  0.021 
mean number of counts:  0.024 
mean number of counts:  0.027 
mean number of counts:  0.031 
mean number of counts:  0.034 
mean number of counts:  0.036 
mean number of counts:  0.039 
mean number of counts:  0.042 
mean number of counts:  0.044 
mean number of counts:  0.046 
mean number of counts:  0.048 
mean number of counts:  0.05 
mean number of counts:  0.052 
mean number of counts:  0.056 
mean number of counts:  0.058 
mean number of counts:  0.06 
mean number of counts:  0.063 
mean number of counts:  0.065 
mean number of counts:  0.067 
mean number of counts:  0.07 
mean number of counts:  0.072 
mean number of counts:  0.074 
mean number of counts:  0.077 
mean number of counts:  0.079 
mean number of counts:  0.082 
mean number of counts:  0.084 
mean number of counts:  0.086 
mean number of counts:  0.089 
mean number of counts:  0.091 
mean number of counts:  0.095 
mean number of counts:  0.097 
mean number of counts:  0.099 
mean number of counts:  0.101 
mean number of counts:  0.105 
mean number of counts:  0.108 
mean number of counts:  0.111 
mean number of counts:  0.115 
mean number of counts:  0.117 
mean number of counts:  0.119 
mean number of counts:  0.121 
mean number of counts:  0.127 
mean number of counts:  0.129 
mean number of counts:  0.135 
mean number of counts:  0.138 
mean number of counts:  0.143 
mean number of counts:  0.146 
mean number of counts:  0.149 
mean number of counts:  0.152 
mean number of counts:  0.154 
mean number of counts:  0.156 
mean number of counts:  0.159 
mean number of counts:  0.161 
mean number of counts:  0.163 
mean number of counts:  0.168 
mean number of counts:  0.17 
mean number of counts:  0.174 
mean number of counts:  0.176 
mean number of counts:  0.178 
mean number of counts:  0.18 
mean number of counts:  0.183 
mean number of counts:  0.185 
mean number of counts:  0.188 
mean number of counts:  0.19 
mean number of counts:  0.193 
mean number of counts:  0.197 
mean number of counts:  0.201 
mean number of counts:  0.203 
mean number of counts:  0.206 
mean number of counts:  0.209 
mean number of counts:  0.212 
mean number of counts:  0.215 
mean number of counts:  0.219 
mean number of counts:  0.224 
mean number of counts:  0.227 
mean number of counts:  0.229 
mean number of counts:  0.231 
mean number of counts:  0.233 
mean number of counts:  0.236 
mean number of counts:  0.238 
mean number of counts:  0.24 
mean number of counts:  0.242 
mean number of counts:  0.246 
mean number of counts:  0.248 
mean number of counts:  0.252 
mean number of counts:  0.256 
mean number of counts:  0.261 
mean number of counts:  0.265 
mean number of counts:  0.267 
mean number of counts:  0.27 
mean number of counts:  0.272 
mean number of counts:  0.274 
mean number of counts:  0.277 
mean number of counts:  0.28 
mean number of counts:  0.283 
mean number of counts:  0.285 
mean number of counts:  0.288 
mean number of counts:  0.292 
mean number of counts:  0.294 
mean number of counts:  0.297 
mean number of counts:  0.3 
mean number of counts:  0.303 
mean number of counts:  0.305 
mean number of counts:  0.31 
mean number of counts:  0.313 
mean number of counts:  0.315 
mean number of counts:  0.319 
mean number of counts:  0.321 
mean number of counts:  0.326 
mean number of counts:  0.33 
mean number of counts:  0.333 
mean number of counts:  0.336 
mean number of counts:  0.338 
mean number of counts:  0.34 
mean number of counts:  0.343 
mean number of counts:  0.345 
mean number of counts:  0.347 
mean number of counts:  0.35 
mean number of counts:  0.352 
mean number of counts:  0.355 
mean number of counts:  0.357 
mean number of counts:  0.359 
mean number of counts:  0.362 
mean number of counts:  0.364 
mean number of counts:  0.366 
mean number of counts:  0.368 
mean number of counts:  0.37 
mean number of counts:  0.373 
mean number of counts:  0.376 
mean number of counts:  0.379 
mean number of counts:  0.381 
mean number of counts:  0.383 
mean number of counts:  0.386 
mean number of counts:  0.388 
mean number of counts:  0.392 
mean number of counts:  0.395 
mean number of counts:  0.397 
mean number of counts:  0.4 
mean number of counts:  0.403 
mean number of counts:  0.407 
mean number of counts:  0.409 
mean number of counts:  0.412 
mean number of counts:  0.415 
mean number of counts:  0.417 
mean number of counts:  0.421 
mean number of counts:  0.425 
mean number of counts:  0.427 
mean number of counts:  0.43 
mean number of counts:  0.432 
mean number of counts:  0.435 
mean number of counts:  0.438 
mean number of counts:  0.441 
mean number of counts:  0.446 
mean number of counts:  0.448 
mean number of counts:  0.45 
mean number of counts:  0.452 
mean number of counts:  0.454 
mean number of counts:  0.456 
mean number of counts:  0.458 
mean number of counts:  0.461 
mean number of counts:  0.466 
mean number of counts:  0.469 
mean number of counts:  0.471 
mean number of counts:  0.474 
mean number of counts:  0.476 
mean number of counts:  0.478 
mean number of counts:  0.48 
mean number of counts:  0.484 
mean number of counts:  0.486 
mean number of counts:  0.489 
mean number of counts:  0.493 
mean number of counts:  0.495 
mean number of counts:  0.498 
mean number of counts:  0.5 
mean number of counts:  0.503 
mean number of counts:  0.506 
mean number of counts:  0.509 
mean number of counts:  0.514 
mean number of counts:  0.516 
mean number of counts:  0.52 
mean number of counts:  0.522 
mean number of counts:  0.524 
mean number of counts:  0.526 
mean number of counts:  0.528 
mean number of counts:  0.53 
mean number of counts:  0.532 
mean number of counts:  0.534 
mean number of counts:  0.536 
mean number of counts:  0.539 
mean number of counts:  0.542 
mean number of counts:  0.546 
mean number of counts:  0.548 
mean number of counts:  0.55 
mean number of counts:  0.554 
mean number of counts:  0.556 
mean number of counts:  0.56 
mean number of counts:  0.565 
mean number of counts:  0.567 
mean number of counts:  0.57 
mean number of counts:  0.573 
mean number of counts:  0.576 
mean number of counts:  0.579 
mean number of counts:  0.581 
mean number of counts:  0.584 
mean number of counts:  0.586 
mean number of counts:  0.589 
mean number of counts:  0.592 
mean number of counts:  0.595 
mean number of counts:  0.597 
mean number of counts:  0.6 
mean number of counts:  0.603 
mean number of counts:  0.606 
mean number of counts:  0.609 
mean number of counts:  0.612 
mean number of counts:  0.615 
mean number of counts:  0.618 
mean number of counts:  0.62 
mean number of counts:  0.622 
mean number of counts:  0.624 
mean number of counts:  0.626 
mean number of counts:  0.628 
mean number of counts:  0.63 
mean number of counts:  0.633 
mean number of counts:  0.635 
mean number of counts:  0.638 
mean number of counts:  0.64 
mean number of counts:  0.643 
mean number of counts:  0.645 
mean number of counts:  0.647 
mean number of counts:  0.649 
mean number of counts:  0.651 
mean number of counts:  0.653 
mean number of counts:  0.655 
mean number of counts:  0.659 
mean number of counts:  0.661 
mean number of counts:  0.664 
mean number of counts:  0.666 
mean number of counts:  0.668 
mean number of counts:  0.67 
mean number of counts:  0.672 
mean number of counts:  0.675 
mean number of counts:  0.677 
mean number of counts:  0.679 
mean number of counts:  0.683 
mean number of counts:  0.688 
mean number of counts:  0.69 
mean number of counts:  0.693 
mean number of counts:  0.695 
mean number of counts:  0.697 
mean number of counts:  0.699 
mean number of counts:  0.702 
mean number of counts:  0.705 
mean number of counts:  0.708 
mean number of counts:  0.711 
mean number of counts:  0.713 
mean number of counts:  0.715 
mean number of counts:  0.718 
mean number of counts:  0.721 
mean number of counts:  0.725 
mean number of counts:  0.727 
mean number of counts:  0.73 
mean number of counts:  0.732 
mean number of counts:  0.735 
mean number of counts:  0.737 
mean number of counts:  0.74 
mean number of counts:  0.743 
mean number of counts:  0.745 
mean number of counts:  0.748 
mean number of counts:  0.75 
mean number of counts:  0.752 
mean number of counts:  0.754 
mean number of counts:  0.756 
mean number of counts:  0.758 
mean number of counts:  0.761 
mean number of counts:  0.763 
mean number of counts:  0.766 
mean number of counts:  0.77 
mean number of counts:  0.772 
mean number of counts:  0.776 
mean number of counts:  0.78 
mean number of counts:  0.783 
mean number of counts:  0.787 
mean number of counts:  0.789 
mean number of counts:  0.794 
mean number of counts:  0.797 
mean number of counts:  0.799 
mean number of counts:  0.801 
mean number of counts:  0.804 
mean number of counts:  0.81 
mean number of counts:  0.814 
mean number of counts:  0.816 
mean number of counts:  0.818 
mean number of counts:  0.821 
mean number of counts:  0.824 
mean number of counts:  0.828 
mean number of counts:  0.83 
mean number of counts:  0.833 
mean number of counts:  0.835 
mean number of counts:  0.837 
mean number of counts:  0.84 
mean number of counts:  0.842 
mean number of counts:  0.845 
mean number of counts:  0.848 
mean number of counts:  0.852 
mean number of counts:  0.855 
mean number of counts:  0.858 
mean number of counts:  0.86 
mean number of counts:  0.862 
mean number of counts:  0.866 
mean number of counts:  0.868 
mean number of counts:  0.87 
mean number of counts:  0.873 
mean number of counts:  0.877 
mean number of counts:  0.879 
mean number of counts:  0.884 
mean number of counts:  0.887 
mean number of counts:  0.89 
mean number of counts:  0.892 
mean number of counts:  0.894 
mean number of counts:  0.898 
mean number of counts:  0.9 
mean number of counts:  0.903 
mean number of counts:  0.905 
mean number of counts:  0.907 
mean number of counts:  0.911 
mean number of counts:  0.913 
mean number of counts:  0.916 
mean number of counts:  0.918 
mean number of counts:  0.92 
mean number of counts:  0.924 
mean number of counts:  0.926 
mean number of counts:  0.93 
mean number of counts:  0.932 
mean number of counts:  0.937 
mean number of counts:  0.939 
mean number of counts:  0.942 
mean number of counts:  0.947 
mean number of counts:  0.949 
mean number of counts:  0.952 
mean number of counts:  0.954 
mean number of counts:  0.956 
mean number of counts:  0.959 
mean number of counts:  0.961 
mean number of counts:  0.963 
mean number of counts:  0.966 
mean number of counts:  0.968 
mean number of counts:  0.971 
mean number of counts:  0.974 
mean number of counts:  0.977 
mean number of counts:  0.98 
mean number of counts:  0.985 
mean number of counts:  0.99 
mean number of counts:  0.995 
mean number of counts:  0.997 
mean number of counts:  1.002 
mean number of counts:  1.005 
mean number of counts:  1.007 
mean number of counts:  1.009 
mean number of counts:  1.012 
mean number of counts:  1.016 
mean number of counts:  1.019 
mean number of counts:  1.023 
mean number of counts:  1.025 
mean number of counts:  1.028 
mean number of counts:  1.03 
mean number of counts:  1.032 
mean number of counts:  1.034 
mean number of counts:  1.036 
mean number of counts:  1.038 
mean number of counts:  1.042 
mean number of counts:  1.045 
mean number of counts:  1.049 
mean number of counts:  1.052 
mean number of counts:  1.054 
mean number of counts:  1.057 
mean number of counts:  1.06 
mean number of counts:  1.063 
mean number of counts:  1.065 
mean number of counts:  1.07 
mean number of counts:  1.072 
mean number of counts:  1.075 
mean number of counts:  1.077 
mean number of counts:  1.084 
mean number of counts:  1.086 
mean number of counts:  1.09 
mean number of counts:  1.092 
mean number of counts:  1.094 
mean number of counts:  1.097 
mean number of counts:  1.1 
mean number of counts:  1.102 
mean number of counts:  1.107 
mean number of counts:  1.11 
mean number of counts:  1.112 
mean number of counts:  1.114 
mean number of counts:  1.116 
mean number of counts:  1.118 
mean number of counts:  1.121 
mean number of counts:  1.124 
mean number of counts:  1.13 
mean number of counts:  1.132 
mean number of counts:  1.135 
mean number of counts:  1.137 
mean number of counts:  1.139 
mean number of counts:  1.141 
mean number of counts:  1.144 
mean number of counts:  1.146 
mean number of counts:  1.148 
mean number of counts:  1.152 
mean number of counts:  1.154 
mean number of counts:  1.156 
mean number of counts:  1.159 
mean number of counts:  1.162 
mean number of counts:  1.164 
mean number of counts:  1.166 
mean number of counts:  1.17 
mean number of counts:  1.174 
mean number of counts:  1.177 
mean number of counts:  1.179 
mean number of counts:  1.181 
mean number of counts:  1.184 
mean number of counts:  1.188 
mean number of counts:  1.19 
mean number of counts:  1.192 
mean number of counts:  1.195 
mean number of counts:  1.197 
mean number of counts:  1.201 
mean number of counts:  1.205 
mean number of counts:  1.207 
mean number of counts:  1.211 
mean number of counts:  1.215 
mean number of counts:  1.217 
mean number of counts:  1.22 
mean number of counts:  1.224 
mean number of counts:  1.23 
mean number of counts:  1.232 
mean number of counts:  1.234 
mean number of counts:  1.236 
mean number of counts:  1.238 
mean number of counts:  1.241 
mean number of counts:  1.243 
mean number of counts:  1.245 
mean number of counts:  1.248 
mean number of counts:  1.25 
mean number of counts:  1.254 
mean number of counts:  1.256 
mean number of counts:  1.259 
mean number of counts:  1.262 
mean number of counts:  1.265 
mean number of counts:  1.267 
mean number of counts:  1.269 
mean number of counts:  1.272 
mean number of counts:  1.275 
mean number of counts:  1.279 
mean number of counts:  1.282 
mean number of counts:  1.284 
mean number of counts:  1.286 
mean number of counts:  1.289 
mean number of counts:  1.291 
mean number of counts:  1.293 
mean number of counts:  1.296 
mean number of counts:  1.298 
mean number of counts:  1.302 
mean number of counts:  1.304 
mean number of counts:  1.306 
mean number of counts:  1.308 
mean number of counts:  1.313 
mean number of counts:  1.315 
mean number of counts:  1.317 
mean number of counts:  1.32 
mean number of counts:  1.324 
mean number of counts:  1.326 
mean number of counts:  1.329 
mean number of counts:  1.331 
mean number of counts:  1.334 
mean number of counts:  1.336 
mean number of counts:  1.338 
mean number of counts:  1.341 
mean number of counts:  1.343 
mean number of counts:  1.346 
mean number of counts:  1.35 
mean number of counts:  1.353 
mean number of counts:  1.355 
mean number of counts:  1.357 
mean number of counts:  1.359 
mean number of counts:  1.361 
mean number of counts:  1.363 
mean number of counts:  1.365 
mean number of counts:  1.368 
mean number of counts:  1.371 
mean number of counts:  1.373 
mean number of counts:  1.376 
mean number of counts:  1.38 
mean number of counts:  1.382 
mean number of counts:  1.386 
mean number of counts:  1.389 
mean number of counts:  1.391 
mean number of counts:  1.393 
mean number of counts:  1.395 
mean number of counts:  1.398 
mean number of counts:  1.4 
mean number of counts:  1.403 
mean number of counts:  1.406 
mean number of counts:  1.409 
mean number of counts:  1.412 
mean number of counts:  1.415 
mean number of counts:  1.42 
mean number of counts:  1.423 
mean number of counts:  1.425 
mean number of counts:  1.429 
mean number of counts:  1.434 
mean number of counts:  1.437 
mean number of counts:  1.44 
mean number of counts:  1.443 
mean number of counts:  1.446 
mean number of counts:  1.449 
mean number of counts:  1.452 
mean number of counts:  1.454 
mean number of counts:  1.458 
mean number of counts:  1.461 
mean number of counts:  1.464 
mean number of counts:  1.467 
mean number of counts:  1.469 
mean number of counts:  1.471 
mean number of counts:  1.473 
mean number of counts:  1.476 
mean number of counts:  1.478 
mean number of counts:  1.48 
mean number of counts:  1.482 
mean number of counts:  1.484 
mean number of counts:  1.486 
mean number of counts:  1.488 
mean number of counts:  1.49 
mean number of counts:  1.492 
mean number of counts:  1.494 
mean number of counts:  1.496 
mean number of counts:  1.5 
mean number of counts:  1.503 
mean number of counts:  1.508 
mean number of counts:  1.512 
mean number of counts:  1.516 
mean number of counts:  1.519 
mean number of counts:  1.522 
mean number of counts:  1.526 
mean number of counts:  1.528 
mean number of counts:  1.531 
mean number of counts:  1.534 
mean number of counts:  1.536 
mean number of counts:  1.538 
mean number of counts:  1.54 
mean number of counts:  1.542 
mean number of counts:  1.544 
mean number of counts:  1.548 
mean number of counts:  1.551 
mean number of counts:  1.553 
mean number of counts:  1.555 
mean number of counts:  1.557 
mean number of counts:  1.561 
mean number of counts:  1.563 
mean number of counts:  1.566 
mean number of counts:  1.569 
mean number of counts:  1.574 
mean number of counts:  1.578 
mean number of counts:  1.58 
mean number of counts:  1.583 
mean number of counts:  1.585 
mean number of counts:  1.587 
mean number of counts:  1.592 
mean number of counts:  1.595 
mean number of counts:  1.599 
mean number of counts:  1.602 
mean number of counts:  1.605 
mean number of counts:  1.607 
mean number of counts:  1.61 
mean number of counts:  1.612 
mean number of counts:  1.615 
mean number of counts:  1.617 
mean number of counts:  1.62 
mean number of counts:  1.622 
mean number of counts:  1.624 
mean number of counts:  1.627 
mean number of counts:  1.629 
mean number of counts:  1.631 
mean number of counts:  1.635 
mean number of counts:  1.638 
mean number of counts:  1.64 
mean number of counts:  1.642 
mean number of counts:  1.646 
mean number of counts:  1.648 
mean number of counts:  1.651 
mean number of counts:  1.653 
mean number of counts:  1.655 
mean number of counts:  1.658 
mean number of counts:  1.661 
mean number of counts:  1.664 
mean number of counts:  1.668 
mean number of counts:  1.671 
mean number of counts:  1.675 
mean number of counts:  1.677 
mean number of counts:  1.681 
mean number of counts:  1.684 
mean number of counts:  1.687 
mean number of counts:  1.689 
mean number of counts:  1.691 
mean number of counts:  1.693 
mean number of counts:  1.695 
mean number of counts:  1.697 
mean number of counts:  1.699 
mean number of counts:  1.702 
mean number of counts:  1.704 
mean number of counts:  1.707 
mean number of counts:  1.709 
mean number of counts:  1.711 
mean number of counts:  1.713 
mean number of counts:  1.719 
mean number of counts:  1.722 
mean number of counts:  1.725 
mean number of counts:  1.728 
mean number of counts:  1.731 
mean number of counts:  1.735 
mean number of counts:  1.738 
mean number of counts:  1.74 
mean number of counts:  1.742 
mean number of counts:  1.744 
mean number of counts:  1.747 
mean number of counts:  1.75 
mean number of counts:  1.754 
mean number of counts:  1.758 
mean number of counts:  1.761 
mean number of counts:  1.765 
mean number of counts:  1.767 
mean number of counts:  1.769 
mean number of counts:  1.772 
mean number of counts:  1.775 
mean number of counts:  1.778 
mean number of counts:  1.78 
mean number of counts:  1.783 
mean number of counts:  1.785 
mean number of counts:  1.787 
mean number of counts:  1.789 
mean number of counts:  1.792 
mean number of counts:  1.795 
mean number of counts:  1.797 
mean number of counts:  1.8 
mean number of counts:  1.802 
mean number of counts:  1.804 
mean number of counts:  1.806 
mean number of counts:  1.809 
mean number of counts:  1.811 
mean number of counts:  1.813 
mean number of counts:  1.815 
mean number of counts:  1.817 
mean number of counts:  1.819 
mean number of counts:  1.822 
mean number of counts:  1.824 
mean number of counts:  1.826 
mean number of counts:  1.828 
mean number of counts:  1.83 
mean number of counts:  1.833 
mean number of counts:  1.838 
mean number of counts:  1.84 
mean number of counts:  1.843 
mean number of counts:  1.845 
mean number of counts:  1.847 
mean number of counts:  1.85 
mean number of counts:  1.854 
mean number of counts:  1.858 
mean number of counts:  1.86 
mean number of counts:  1.863 
mean number of counts:  1.867 
mean number of counts:  1.87 
mean number of counts:  1.873 
mean number of counts:  1.875 
mean number of counts:  1.879 
mean number of counts:  1.881 
mean number of counts:  1.883 
mean number of counts:  1.886 
mean number of counts:  1.888 
mean number of counts:  1.89 
mean number of counts:  1.892 
mean number of counts:  1.894 
mean number of counts:  1.898 
mean number of counts:  1.902 
mean number of counts:  1.905 
mean number of counts:  1.908 
mean number of counts:  1.91 
mean number of counts:  1.912 
mean number of counts:  1.914 
mean number of counts:  1.916 
mean number of counts:  1.919 
mean number of counts:  1.924 
mean number of counts:  1.927 
mean number of counts:  1.929 
mean number of counts:  1.933 
mean number of counts:  1.936 
mean number of counts:  1.938 
mean number of counts:  1.94 
mean number of counts:  1.943 
mean number of counts:  1.945 
mean number of counts:  1.948 
mean number of counts:  1.95 
mean number of counts:  1.953 
mean number of counts:  1.957 
mean number of counts:  1.961 
mean number of counts:  1.964 
mean number of counts:  1.966 
mean number of counts:  1.968 
mean number of counts:  1.97 
mean number of counts:  1.972 
mean number of counts:  1.974 
mean number of counts:  1.977 
mean number of counts:  1.979 
mean number of counts:  1.981 
mean number of counts:  1.985 
mean number of counts:  1.989 
mean number of counts:  1.991 
mean number of counts:  1.993 
mean number of counts:  1.995 
mean number of counts:  2.001 
mean number of counts:  2.005 
mean number of counts:  2.007 
mean number of counts:  2.01 
mean number of counts:  2.013 
mean number of counts:  2.017 
mean number of counts:  2.021 
mean number of counts:  2.023 
mean number of counts:  2.025 
mean number of counts:  2.028 
mean number of counts:  2.03 
mean number of counts:  2.032 
mean number of counts:  2.035 
mean number of counts:  2.038 
mean number of counts:  2.04 
mean number of counts:  2.042 
mean number of counts:  2.044 
mean number of counts:  2.047 
mean number of counts:  2.049 
mean number of counts:  2.051 
mean number of counts:  2.054 
mean number of counts:  2.056 
mean number of counts:  2.058 
mean number of counts:  2.061 
mean number of counts:  2.063 
mean number of counts:  2.065 
mean number of counts:  2.068 
mean number of counts:  2.07 
mean number of counts:  2.073 
mean number of counts:  2.075 
mean number of counts:  2.077 
mean number of counts:  2.079 
mean number of counts:  2.081 
mean number of counts:  2.083 
mean number of counts:  2.085 
mean number of counts:  2.088 
mean number of counts:  2.09 
mean number of counts:  2.092 
mean number of counts:  2.094 
mean number of counts:  2.096 
mean number of counts:  2.099 
mean number of counts:  2.101 
mean number of counts:  2.103 
mean number of counts:  2.107 
mean number of counts:  2.109 
mean number of counts:  2.111 
mean number of counts:  2.113 
mean number of counts:  2.115 
mean number of counts:  2.117 
mean number of counts:  2.12 
mean number of counts:  2.122 
mean number of counts:  2.124 
mean number of counts:  2.126 
mean number of counts:  2.128 
mean number of counts:  2.131 
mean number of counts:  2.137 
mean number of counts:  2.139 
mean number of counts:  2.141 
mean number of counts:  2.143 
mean number of counts:  2.146 
mean number of counts:  2.148 
mean number of counts:  2.151 
mean number of counts:  2.153 
mean number of counts:  2.155 
mean number of counts:  2.161 
mean number of counts:  2.166 
mean number of counts:  2.168 
mean number of counts:  2.17 
mean number of counts:  2.172 
mean number of counts:  2.176 
mean number of counts:  2.178 
mean number of counts:  2.182 
mean number of counts:  2.185 
mean number of counts:  2.188 
mean number of counts:  2.192 
mean number of counts:  2.194 
mean number of counts:  2.196 
mean number of counts:  2.198 
mean number of counts:  2.201 
mean number of counts:  2.203 
mean number of counts:  2.206 
mean number of counts:  2.208 
mean number of counts:  2.211 
mean number of counts:  2.213 
mean number of counts:  2.215 
mean number of counts:  2.219 
mean number of counts:  2.221 
mean number of counts:  2.224 
mean number of counts:  2.226 
mean number of counts:  2.23 
mean number of counts:  2.232 
mean number of counts:  2.234 
mean number of counts:  2.237 
mean number of counts:  2.24 
mean number of counts:  2.243 
mean number of counts:  2.245 
mean number of counts:  2.247 
mean number of counts:  2.25 
mean number of counts:  2.252 
mean number of counts:  2.254 
mean number of counts:  2.256 
mean number of counts:  2.258 
mean number of counts:  2.26 
mean number of counts:  2.262 
mean number of counts:  2.265 
mean number of counts:  2.269 
mean number of counts:  2.273 
mean number of counts:  2.275 
mean number of counts:  2.278 
mean number of counts:  2.28 
mean number of counts:  2.284 
mean number of counts:  2.288 
mean number of counts:  2.29 
mean number of counts:  2.293 
mean number of counts:  2.295 
mean number of counts:  2.297 
mean number of counts:  2.3 
mean number of counts:  2.302 
mean number of counts:  2.304 
mean number of counts:  2.308 
mean number of counts:  2.31 
mean number of counts:  2.312 
mean number of counts:  2.316 
mean number of counts:  2.319 
mean number of counts:  2.322 
mean number of counts:  2.324 
mean number of counts:  2.326 
mean number of counts:  2.33 
mean number of counts:  2.332 
mean number of counts:  2.334 
mean number of counts:  2.337 
mean number of counts:  2.34 
mean number of counts:  2.342 
mean number of counts:  2.344 
mean number of counts:  2.347 
mean number of counts:  2.349 
mean number of counts:  2.352 
mean number of counts:  2.355 
mean number of counts:  2.358 
mean number of counts:  2.36 
mean number of counts:  2.362 
mean number of counts:  2.366 
mean number of counts:  2.368 
mean number of counts:  2.371 
mean number of counts:  2.378 
mean number of counts:  2.38 
mean number of counts:  2.383 
mean number of counts:  2.385 
mean number of counts:  2.387 
mean number of counts:  2.389 
mean number of counts:  2.392 
mean number of counts:  2.395 
mean number of counts:  2.398 
mean number of counts:  2.401 
mean number of counts:  2.407 
mean number of counts:  2.41 
mean number of counts:  2.413 
mean number of counts:  2.416 
mean number of counts:  2.418 
mean number of counts:  2.421 
mean number of counts:  2.423 
mean number of counts:  2.426 
mean number of counts:  2.428 
mean number of counts:  2.43 
mean number of counts:  2.434 
mean number of counts:  2.44 
mean number of counts:  2.443 
mean number of counts:  2.445 
mean number of counts:  2.448 
mean number of counts:  2.453 
mean number of counts:  2.456 
mean number of counts:  2.458 
mean number of counts:  2.461 
mean number of counts:  2.463 
mean number of counts:  2.465 
mean number of counts:  2.468 
mean number of counts:  2.47 
mean number of counts:  2.472 
mean number of counts:  2.475 
mean number of counts:  2.478 
mean number of counts:  2.48 
mean number of counts:  2.483 
mean number of counts:  2.485 
mean number of counts:  2.488 
mean number of counts:  2.493 
mean number of counts:  2.495 
mean number of counts:  2.497 
mean number of counts:  2.499 
mean number of counts:  2.501 
mean number of counts:  2.504 
mean number of counts:  2.508 
mean number of counts:  2.51 
mean number of counts:  2.512 
mean number of counts:  2.515 
mean number of counts:  2.52 
mean number of counts:  2.525 
mean number of counts:  2.527 
mean number of counts:  2.53 
mean number of counts:  2.536 
mean number of counts:  2.538 
mean number of counts:  2.54 
mean number of counts:  2.544 
mean number of counts:  2.547 
mean number of counts:  2.549 
mean number of counts:  2.552 
mean number of counts:  2.555 
mean number of counts:  2.557 
mean number of counts:  2.561 
mean number of counts:  2.565 
mean number of counts:  2.567 
mean number of counts:  2.569 
mean number of counts:  2.571 
mean number of counts:  2.573 
mean number of counts:  2.576 
mean number of counts:  2.579 
mean number of counts:  2.581 
mean number of counts:  2.584 
mean number of counts:  2.586 
mean number of counts:  2.589 
mean number of counts:  2.593 
mean number of counts:  2.597 
mean number of counts:  2.601 
mean number of counts:  2.605 
mean number of counts:  2.608 
mean number of counts:  2.61 
mean number of counts:  2.612 
mean number of counts:  2.616 
mean number of counts:  2.619 
mean number of counts:  2.622 
mean number of counts:  2.625 
mean number of counts:  2.628 
mean number of counts:  2.63 
mean number of counts:  2.632 
mean number of counts:  2.634 
mean number of counts:  2.636 
mean number of counts:  2.638 
mean number of counts:  2.64 
mean number of counts:  2.642 
mean number of counts:  2.644 
mean number of counts:  2.646 
mean number of counts:  2.651 
mean number of counts:  2.653 
mean number of counts:  2.656 
mean number of counts:  2.659 
mean number of counts:  2.661 
mean number of counts:  2.667 
mean number of counts:  2.671 
mean number of counts:  2.674 
mean number of counts:  2.677 
mean number of counts:  2.68 
mean number of counts:  2.682 
mean number of counts:  2.684 
mean number of counts:  2.686 
mean number of counts:  2.689 
mean number of counts:  2.693 
mean number of counts:  2.696 
mean number of counts:  2.7 
mean number of counts:  2.703 
mean number of counts:  2.705 
mean number of counts:  2.707 
mean number of counts:  2.709 
mean number of counts:  2.712 
mean number of counts:  2.715 
mean number of counts:  2.718 
mean number of counts:  2.723 
mean number of counts:  2.725 
mean number of counts:  2.727 
mean number of counts:  2.731 
mean number of counts:  2.734 
mean number of counts:  2.736 
mean number of counts:  2.738 
mean number of counts:  2.741 
mean number of counts:  2.743 
mean number of counts:  2.746 
mean number of counts:  2.749 
mean number of counts:  2.751 
mean number of counts:  2.754 
cat("\n")
cat("Different students may get different values because the Monte Carlo simulation uses random numbers. So every individual may get different random values thus making the values vary from computer to computer. ")
Different students may get different values because the Monte Carlo simulation uses random numbers. So every individual may get different random values thus making the values vary from computer to computer. 

Question 6. For our specific random variable, we know that its PDF is defined by the function \(f(x) = 10x(1-x)\). Utilize the accept-reject algorithm to draw samples from this distribution. Take a look at Lecture 10 slide 8 and 9

#Answer
fx<- function(x) {
  return(10 * x * (1 - x))
}
M<- 2.5
generate_sample <- function() {
  while(TRUE) {
    x<- runif(1)
    y <- runif(1, max = M)

    if (y <= fx(x)) {
      return(x) 
    }
  }
}

set.seed(12345) 
num_samples<- 1000
samples<- replicate(num_samples, generate_sample())

hist(samples, breaks = 30, probability = TRUE,
     main = "Histogram of Samples from f(x) = 10x(1-x)")


curve(fx(x), col = "red", lwd = 2, add = TRUE)
legend("topright", legend = c("Generated Samples", "f(x)"), col = c("blue", "red"), lwd = 2)

LS0tCnRpdGxlOiAiIDxjZW50ZXI+PHNwYW4gc3R5bGU9J2NvbG9yOiBibHVlOyc+IEhvbWV3b3JrIDMgPC9zcGFuPjwvY2VudGVyPiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCiMgUXVlc3Rpb24gMS4gIENvbnNpZGVyIHRoZSBCaW5vbWlhbCBkaXN0cmlidXRpb24gd2l0aCAkbiA9IDI0JCBhbmQgJHAgPSAuOSQgdGhhdCBpcyB1c2VkIHRvIG1vZGVsIHRoZSBudW1iZXIgb2YgY29ycmVjdGx5IHJlY2VpdmVkIGJpdHMgb24gYSBzYXRlbGxpdGUgbGluayB0aGF0IHRyYW5zbWl0cyBkYXRhIGluICQyNCQtYml0IGJsb2Nrcy4KCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDEgKGEpIFBsb3QgdGhlIHByb2JhYmlsaXR5IGRlbnNpdHkgZnVuY3Rpb24gYW5kIGN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbnVtYmVyIG9mIGNvcnJlY3RseSByZWNlaXZlZCBiaXRzPC9zcGFuPgoKYGBge3J9CiNBbnN3ZXIgMWEKbjwtIDI0CnA8LSAwLjkKeDwtIDA6bgpwZGY8LSBkYmlub20oeCwgc2l6ZSA9IG4sIHByb2IgPSBwKQpjZGY8LSBwYmlub20oeCwgc2l6ZSA9IG4sIHByb2IgPSBwKQoKI3Bsb3QgcHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbgpwbG90KHgsIHBkZiwgdHlwZSA9ICJoIiwgeWxpbSA9IGMoMCwgbWF4KHBkZikpKQoKI3Bsb3QgY3VtdWxhdGl2ZSBkaXN0dWJ1dGlvbiBmdW5jdGlvbgpwbG90KHgsIGNkZiwgdHlwZSA9ICJzIiwgbWFpbiA9ICJCaW5vbWlhbCBEaXN0cmlidXRpb24gQ0RGIikKYGBgCgojIyMgPHNwYW4gc3R5bGU9J2NvbG9yOiBncmV5Oyc+UXVlc2lvbiAxIChiKSBXaGF0IGlzIHRoZSBtZWFuIG51bWJlciBvZiBjb3JyZWN0bHkgcmVjZWl2ZWQgYml0cz8gV2hhdCBpcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uPzwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIgMWIKIyhtYWtlIHN1cmUgdGhhdCB3aGF0IHlvdSBwcmludCBtYWtlIHNlbnNlIHRvIG1lKSAtIGZvciBleGFtcGxlIHRvIHByaW50IG1lYW4geW91IGNhbiB1c2UgY2F0IGNvbW1hbmQgb25jZSB5b3UgZG9uZSB3aXRoIHRoZSBjYWxjdWxhdGlvbiBhbmQgaGF2ZSB2YWx1ZSBpbiB0aGUgdmFyaWFibGUKbWVhbl92YWx1ZT0gbiAqIHAKc3RkX2Rldj0gc3FydChuICogcCAqICgxLXApKQpjYXQoIk1lYW4gbnVtYmVyIG9mIGNvcnJlY3RseSByZWNlaXZlZCBiaXRzIGlzICIsICBtZWFuX3ZhbHVlKQpjYXQoIlxuIikKY2F0KCJUaGUgc3RhbmRhcmQgZGV2aWF0aW9uIGlzICIsICBzdGRfZGV2KQoKCgpgYGAKCgojIyMgPHNwYW4gc3R5bGU9J2NvbG9yOiBncmV5Oyc+UXVlc2lvbiAxIChjKSBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSBvZiBtb3JlIHRoYW4gJDMkLWJpdCBlcnJvcnMgaW4gdGhlIGJsb2NrIG9mICQyNCQ/PC9zcGFuPgpgYGB7cn0KI0Fuc3dlciAxYwptb3JlVGhhblRocmVlIDwtIDEgLSBwYmlub20oMyxzaXplPW4sIHByb2I9cCkKbW9yZVRoYW5UaHJlZQpgYGAKCgojIyMgPHNwYW4gc3R5bGU9J2NvbG9yOiBncmV5Oyc+UXVlc2lvbiAxIChkKSBXaGF0IGlzIHRoZSBtZWRpYW4gb2YgdGhpcyBkaXN0cmlidXRpb24/IFdoYXQgY2FuIHlvdSBpbnRlcnByZXQgZnJvbSB0aGUgbWVkaWFuIHZhbHVlPyA8L3NwYW4+CmBgYHtyfQojQW5zd2VyIDFkCm1lZGlhblZhbDwtIHFiaW5vbSgwLjUsIHNpemUgPSBuLCBwcm9iID0gcCwgbG93ZXIudGFpbCA9IFRSVUUpCm1lZGlhblZhbApjYXQoIlRoZSBNZWRpYW4gdGVsbHMgdXMgdGhhdCA1MCUgb2YgdGhlIHRpbWUsIHdlIGNhbiBleHBlY3QgdG8gZ2V0IDIyIG9yIGZld2VyIGJpdHMgY29ycmVjdGx5LiAiKQoKYGBgCgoKIyMjIDxzcGFuIHN0eWxlPSdjb2xvcjogZ3JleTsnPlF1ZXNpb24gMSAoZSkgIFdoYXQgaXMgdGhlIDYwdGggcXVhbnRpbGUgb2YgdGhpcyBkaXN0cmlidXRpb24/IFdoYXQgY2FuIHlvdSBpbnRlcnByZXQgZnJvbSB0aGlzIHZhbHVlPzwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIgMWUKcXVhbnRpbGUobiwgcHJvYnMgPSBjKC42MCkpCgojSW50ZXJwcmV0YXRpb24KY2F0KCJUaGlzIHRlbGxzIHVzIHRoYXQgNjAlIG9mIHRoZSB0aW1lLCB3ZSBjYW4gZ2V0IDI0IG9yIGZld2VyIGJpdHMgY29ycmVjdGx5IikKYGBgCgojIFF1ZXN0aW9uMi4gVGhlIFB1YmxpYyBTZXJ2aWNlIEFuc3dlcmluZyBQb2ludCAoUFNBUCkgaW4gU2FuIEZyYW5jaXNjbyBlbXBsb3lzICQxOSQgb3BlcmF0b3JzIGluICQ4JC1ob3VyIHNoaWZ0cyB0byBwcm9jZXNzICQ5MTEkIGNhbGxzLiBUaGVyZSBhcmUgYXQgbGVhc3QgJDUkIG9wZXJhdG9ycyBhbHdheXMgYW5zd2VyaW5nIGNhbGxzLiBUaGUgbnVtYmVyIG9mIGNhbGxzIHByb2Nlc3NlZCBwZXIgb3BlcmF0b3IgY2FuIGJlIG1vZGVsZWQgd2l0aCBhIFBvaXNzb24gcmFuZG9tIHZhcmlhYmxlIHdpdGggcmF0ZSAkXGxhbWJkYV8wID0yMCQgY2FsbHMgcGVyIGhvdXIuCgojIyMgPHNwYW4gc3R5bGU9J2NvbG9yOiBncmV5Oyc+UXVlc2lvbiAyIChhKSBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSBhbiBvcGVyYXRvciBjYW4gcHJvY2VzcyAyMCBjYWxscyBpbiBhbiBob3VyPyBSZXBlYXQgZm9yIDMwIGNhbGxzIGluIGFuIGhvdXI/IDwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIgMmEKbGFtYmRhPC0gMjAKcHJvYlR3ZW50eTwtIGRwb2lzKDIwLGxhbWJkYSkKcHJvYlRoaXJ0eTwtIGRwb2lzKDMwLCBsYW1iZGEpCgpwcm9iVHdlbnR5CnByb2JUaGlydHkKCmBgYAoKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDIgKGIpIEdpdmVuIHRoYXQgMjQwIGNhbGxzIG9jY3VycmVkIGluIGFuIGhvdXIsIHdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IHRoYXQgdGhlIHRlbiBvcGVyYXRvcnMgY2FuIHByb2Nlc3MgdGhlbSBhbGwgYXNzdW1pbmcgdGhleSBhcmUgc3BsaXQgZXF1YWxseSBhbW9uZyB0aGUgb3BlcmF0b3JzPzwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIgMmIKcHJvYjI0Q2FsbHM8LSBkcG9pcygyNCwgbGFtYmRhKQpwcm9iMjQwQ2FsbHM8LSBwcm9iMjRDYWxsc14xMApwcm9iMjQwQ2FsbHMKCmBgYAoKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDIgKGMpIE5vdywgSWYgdGhlIGFnZ3JlZ2F0ZSBjYWxsIHJhdGUgcGVyIGhvdXIgJFxsYW1iZGFfYyQgLCBpcyBtZWFzdXJlZCBieSAkXGxhbWJkYV9jID0gODUkIGNhbGxzIHBlciBob3VyLCB3aGF0IGlzIHRoZSBwcm9iYWJpbGl0eSBvZiBtb3JlIHRoYW4gJDEwMCQgY2FsbHMgaW4gYW4gaG91cjwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIgMmMKbGFtYmRhX2M8LSA4NQptb3JlVGhhbjEwMDwtIDEtcHBvaXMoMTAwLGxhbWJkYV9jKQptb3JlVGhhbjEwMApgYGAKCiMgUXVlc3Rpb24gMy4gRm9yIHRoZSB0d28gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYmVsb3cgQSBhbmQgQihkb27igJl0IGZvcmdldCB0byBhZGQgeW91ciBSIGNvZGUpCiMjIyAtIFtBXSBcKFpfaSA9ICg5Wl97aS0xfSArIDEpIFxtb2QgMTZcKSB3aXRoIFwoWl8wID0gNVwpLgojIyMgLSBbQl0gXChaX2kgPSAoN1pfe2ktMX0gKyAzKSBcbW9kIDMyXCkgd2l0aCBcKFpfMCA9IDEwXCksCgoKIyMjIDxzcGFuIHN0eWxlPSdjb2xvcjogZ3JleTsnPlF1ZXNpb24gMyAoYSkgQ29tcHV0ZSAkWl9pJCBhbmQgJFVfaSQgZm9yIHZhbHVlcyBvZiAkaSQgdW50aWwgYSBudW1iZXIgaXMgcmVwZWF0ZWQsIHdoYXQgaXMgdGhlIHBlcmlvZCBvZiBib3RoIHRoZSBnZW5lcmF0b3I/IFByb3ZpZGUgeW91ciBjb21tZW50cyBhYm91dCB0aGUgcGVyaW9kIG9mIGJvdGggUkdOIDwvc3Bhbj4KCmBgYHtyfQojQW5zd2VyIDNhClpfQSA8LSA1CnBlcmlvZEEgPC0gMApVX0FfdmFsdWVzIDwtIG51bWVyaWMoKQoKWl9CIDwtIDEwCnBlcmlvZEIgPC0gMApVX0JfdmFsdWVzIDwtIG51bWVyaWMoKQoKc2NhdHRlcl9BIDwtIGxpc3QoKQpzY2F0dGVyX0IgPC0gbGlzdCgpCgpuZXh0QSA8LSBmdW5jdGlvbihaKSB7CiAgcmV0dXJuKCg5ICogWiArIDEpICUlIDE2KQp9Cm5leHRCIDwtIGZ1bmN0aW9uKFopIHsKICByZXR1cm4oKDcgKiBaICsgMykgJSUgMzIpCn0KCndoaWxlIChUUlVFKSB7CiAgWl9uZXh0QSA8LSBuZXh0QShaX0EpCiAgVV9BIDwtIFpfbmV4dEEgLyAxNgogIHBlcmlvZEEgPC0gcGVyaW9kQSArIDEKICBVX0FfdmFsdWVzIDwtIGMoVV9BX3ZhbHVlcywgVV9BKQogIHNjYXR0ZXJfQVtbcGVyaW9kQV1dIDwtIFVfQV92YWx1ZXMKICAKICBpZiAoWl9uZXh0QSAlaW4lIFVfQV92YWx1ZXMpIHsKICAgIGJyZWFrCiAgfQogIAogIFpfQSA8LSBaX25leHRBCiAgCiAgWl9uZXh0QiA8LSBuZXh0QihaX0IpCiAgVV9CIDwtIFpfbmV4dEIgLyAzMgogIHBlcmlvZEIgPC0gcGVyaW9kQiArIDEKICBVX0JfdmFsdWVzIDwtIGMoVV9CX3ZhbHVlcywgVV9CKQogIHNjYXR0ZXJfQltbcGVyaW9kQl1dIDwtIFVfQl92YWx1ZXMKICAKICBpZiAoWl9uZXh0QiAlaW4lIFVfQl92YWx1ZXMpIHsKICAgIGJyZWFrCiAgfQogIAogIFpfQiA8LSBaX25leHRCCiAgCgoKfQpjYXQoIlBlcmlvZCBBOiAiLCBwZXJpb2RBKQpjYXQoIlxuIikKY2F0KCJQZXJpb2QgQjogIiwgcGVyaW9kQikKYGBgClRoZSBwZXJpb2QgaXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhhdCB3ZXJlIGdlbmVyYXRlZCBiZWZvcmUgYSByZXBlYXQgb2NjdXJlZC4gCgojIyMgPHNwYW4gc3R5bGU9J2NvbG9yOiBncmV5Oyc+UXVlc2lvbiAzIChiKSBXaGljaCBvZiB0aGVzZSBwYXJhbWV0ZXJzIGVmZmVjdCB0aGUgcGVyaW9kIG9mIExDRyDigJMgJGEkLCAkYiQsICRaXzAkIDwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIgCmNhdCgiVGhlIHBhcmFtZXRlcnMgYSBhbmQgYiBjYW4gYWZmZWN0IHRoZSBwZXJpb2QuIENoYW5naW5nIHRoZXNlIHZhbHVlcyBjYW4gdmFyeSB0aGUgYW1vdW50IG9mIHZhbHVlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYmVmb3JlIGEgcmVwZWF0LiIpCmBgYAoKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDMgKGMpIEZvciBib3RoIGdlbmVyYXRvcnMgcGxvdCBhIHNjYXR0ZXIgZGlhZ3JhbSBvZiB0aGUgWmkgdmFsdWVzIDEgYXBhcnQuIFdoYXQgYXJlIHlvdXIgb2JzZXJ2YXRpb25zIGZyb20gdGhlc2UgcGxvdHM/IFdoYXQgZG8geW91IHRoaW5rIGFib3V0IHRoZSBwcm9wZXJ0eSBvZiByYW5kb21uZXNzIG9mIHRoZXNlIGdlbmVyYXRvcnM/IDwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIKcGxvdCh1bmxpc3Qoc2NhdHRlcl9BW1sxXV0pLCB1bmxpc3Qoc2NhdHRlcl9BW1syXV0pLCBtYWluID0gIlNjYXR0ZXIgRGlhZ3JhbSBBIikKcGxvdCh1bmxpc3Qoc2NhdHRlcl9CW1sxXV0pLCB1bmxpc3Qoc2NhdHRlcl9CW1syXV0pLCBtYWluID0gIlNjYXR0ZXIgRGlhZ3JhbSBCIikKCmBgYAoKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDMgKGQpIFJhbmRvbW5lc3Mgb2YgZGVmYXVsdCByYW5kb20gZ2VuZXJhdG9yIG9mIFIg4oCTIFJ1biBydW5pZiBjb21tYW5kIHRvIGdlbmVyYXRlIDEwMCByYW5kb20gbnVtYmVycyBhbmQgcGxvdCB0aGUgc2NhdHRlciBkaWFncmFtIG9mIHRoZXNlIG51bWJlcnMgKCB2YWx1ZXMgMSBhcGFydCkgYW5kIGRpc2N1c3MgeW91ciBvYnNlcnZhdGlvbnMgYWJvdXQgcmFuZG9tbmVzcyBvZiB0aGlzIHJhbmRvbSBnZW5lcmF0b3IuIDwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIKcmFuZG9tX251bWJlcnMgPC0gcnVuaWYoMTAwKQpwbG90KHJhbmRvbV9udW1iZXJzWy0xMDBdLCByYW5kb21fbnVtYmVyc1stMV0sIG1haW4gPSAiU2NhdHRlciBEaWFncmFtIFIiKQpjYXQoIlRoZSByYW5kb21uZXNzIG9mIHRoaXMgZ2VuZXJhdG9yIGlzIHRydWx5IHJhbmRvbSBhcyBzZWVuIGluIHRoZSBzY2F0dGVyIHBsb3QuIFRoZSB2YWx1ZXMgYXJlIGRpc3BlcnNlZCBhY3Jvc3MgdGhlIHdob2xlIHJhbmdlIG9mIFNjYXR0ZXIgRGlhZ3JhbSBSIikKCmBgYAoKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDMgKGUpIENvbXB1dGUgdGhlIG1lYW4gdmFsdWUgb2YgJFVfaSQgYWNyb3NzIHRoZSBwZXJpb2Q8L3NwYW4+CmBgYHtyfQojQW5zd2VyCm1lYW5BIDwtIG1lYW4oVV9BX3ZhbHVlcykKbWVhbkIgPC0gbWVhbihVX0JfdmFsdWVzKQptZWFuQQptZWFuQgpgYGAKCgojIyMgPHNwYW4gc3R5bGU9J2NvbG9yOiBncmV5Oyc+UXVlc2lvbiAzIChmKSBCeSBwcm92aWRpbmcgYSBwbG90IG9mIGRlbnNpdHkgKGhpc3RvZ3JhbSkgZGlzY3VzcyB0aGUgdW5pZm9ybWl0eSBvZiBib3RoIG9mIHRoZSBnZW5lcmF0b3JzIDwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIKaGlzdChVX0FfdmFsdWVzLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBHZW5lcmF0b3IgQSIsIHhsaW0gPSBjKDAsIDEpKQpoaXN0KFVfQl92YWx1ZXMsIG1haW4gPSAiSGlzdG9ncmFtIG9mIEdlbmVyYXRvciBCIiwgeGxpbSA9IGMoMCwgMSkpCmNhdCgiV2hpbGUgdGhlIGZyZXF1ZW5jaWVzIGJldHdlZW4gdGhlIHR3byBnZW5lcmF0b3JzIGNoYW5nZXMgZm9yIHNvbWUgdmFsdWVzLCB0aGUgZnJlcXVlbmNpZXMgb2YgYm90aCBhcmUgc3RpbGwgd2l0aGluIHRoZSBzYW1lIHJhbmdlLiAiKQoKYGBgCgojIFF1ZXN0aW9uIDQuIFVzaW5nIHRoZSBpbnZlcnNlIHRyYW5zZm9ybSBtZXRob2QKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzdGlvbiA0LihhKSBEZXZlbG9wIGFuIGFsZ29yaXRobSBmb3IgdGhlIHJhbmRvbSB2YXJpYWJsZSB3aXRoIGN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIEYoeCkgYmVsb3cuPC9zcGFuPgoKXFsgRih4KSA9IDEgLSBlXnstKHgvXGxhbWJkYSlea30gXF0KCndoZXJlIFwoIHggXGdlcSAwIFwpLCBcKCBcbGFtYmRhIFxnZXEgMCBcKSwgYW5kIFwoIGsgXGdlcSAwIFwpLgoKYGBge3J9CiMgQW5zd2VyIDRhCiMgVGhpcyBtaWdodCBiZSBoYXJkIHRvIHByaW50IHVzaW5nIFIgLSB5b3UgY2FuIHdyaXRlIHRoZSBzdGVwIGluIHlvdXIgbm90ZWJvb2sgYW5kIHRoZW4gaW5jbHVkZSBpbWFnZSBoZXJlIC8gb3IgeW91IGNhbiBpbmNsdWRlIGFzIHNlcGVyYXRlIGZpbGUgd2hlbiB1cGxvYWQKCiMgQ2hlY2sgaWYgdGhlIElSZGlzcGxheSBwYWNrYWdlIGlzIGFscmVhZHkgaW5zdGFsbGVkCmlmICghcmVxdWlyZShJUmRpc3BsYXksIHF1aWV0bHkgPSBUUlVFKSkgewogICMgSWYgbm90IGluc3RhbGxlZCwgaW5zdGFsbCBpdAogIGluc3RhbGwucGFja2FnZXMoIklSZGlzcGxheSIpCiAgCiAgIyBMb2FkIHRoZSBJUmRpc3BsYXkgbGlicmFyeQogIGxpYnJhcnkoSVJkaXNwbGF5KQp9IGVsc2UgewogICMgSWYgYWxyZWFkeSBpbnN0YWxsZWQsIGp1c3QgbG9hZCB0aGUgbGlicmFyeQogIGxpYnJhcnkoSVJkaXNwbGF5KQp9CgoKIyBFbWJlZCBhbiBpbWFnZQojZGlzcGxheV9wbmcoZmlsZSA9ICJleGFtcGxlLnBuZyIpCgoKYGBgCgoKIyMjIDxzcGFuIHN0eWxlPSdjb2xvcjogZ3JleTsnPlF1ZXNpb24gNCAoYikgVXNlIHRoZSBmaXJzdCB0aHJlZSBVaSB2YWx1ZXMgZnJvbSBwYXJ0IChhKSBhbmQgZ2VuZXJhdG9yIFtBXSBvZiBwcmV2aW91cyBwcm9ibGVtIHRvIGNyZWF0ZSAzIHZhbHVlcyBmcm9tIHRoZSByYW5kb20gdmFyaWFibGUgd2hlbiwgJFxsYW1iZGEgPSAxJCwgJPCdkZggPSA1JDwvc3Bhbj4KYGBge3J9CiNBbnN3ZXIKCmBgYAoKCiMjIyA8c3BhbiBzdHlsZT0nY29sb3I6IGdyZXk7Jz5RdWVzaW9uIDQgKGMpIHNpbmcgUiBnZW5lcmF0ZSAxMCwwMDAgdmFsdWVzIGZyb20geW91ciBhbGdvcml0aG0gd2hlbiAgXGxhbWJkYSA9IDEgLCDwnZGYID0gNSAgYW5kIHBsb3QgYSBoaXN0b2dyYW0gb2YgdGhlIGRlbnNpdHkuIERpc2N1c3Mgd2hhdCBpbnNpZ2h0cyB5b3Ugb2J0YWluIHdoZW4geW91IGxvb2sgYXQgdGhlIHBsb3QgZ2VuZXJhdGVkIGhlcmUgdnMgdGhlIHBsb3QgeW91IGdlbmVyYXRlZCBpbiBxdWVzdGlvbiAzIChlKSA8L3NwYW4+CmBgYHtyfQojQW5zd2VyCgpgYGAKCiMgUXVlc3Rpb24gNS4gRGV2ZWxvcCBhIE1vbnRlIENhcmxvIHNpbXVsYXRpb24gaW4gUiB0aGF0IGNvdW50cyB0aGUgbnVtYmVyIG9mIHVuaWZvcm0gWzAsMV0gcmFuZG9tIG51bWJlcnMgdGhhdCBtdXN0IGJlIHN1bW1lZCB0byBnZXQgYSBzdW0gZ3JlYXRlciB0aGFuIDEuIFJ1biBhIHNpbmdsZSBzaW11bGF0aW9uIHdpdGggbiA9IDEwLDAwMCB0aW1lcyBhbmQgZmluZCB0aGUgbWVhbiBvZiB0aGUgbnVtYmVyIG9mIGNvdW50cy4gRG8geW91IHRoaW5rIHRoaXMgbnVtYmVyIGxvb2tzIHNvbWV3aGF0IGZhbWlsaWFyLiBFdmVyeSBzdHVkZW50IG1pZ2h0IGdldCBzbGlnaHRseSBkaWZmZXJlbnQgdmFsdWUgYW55IGlkZWFzIHdoeT8KYGBge3J9CiNBbnN3ZXIKc2ltczwtIDEwMDAKY291bnRzPC0gbnVtZXJpYyhzaW1zKQoKZm9yKGkgaW4gMTpzaW1zKXsKICBzdW08LTAKICBjb3VudDwtMAogIAogIHdoaWxlKHN1bTw9MSl7CiAgICByYW5kPC1ydW5pZigxKQogICAgc3VtPC1zdW0rcmFuZAogICAgY291bnQ8LSBjb3VudCsxCiAgfQogIGNvdW50c1tpXTwtY291bnQKICAKICBtZWFuT2ZDb3VudDwtbWVhbihjb3VudHMpCiAgY2F0KCJtZWFuIG51bWJlciBvZiBjb3VudHM6ICIsIG1lYW5PZkNvdW50LCAiXG4iKQogCn0KY2F0KCJcbiIpCmNhdCgiRGlmZmVyZW50IHN0dWRlbnRzIG1heSBnZXQgZGlmZmVyZW50IHZhbHVlcyBiZWNhdXNlIHRoZSBNb250ZSBDYXJsbyBzaW11bGF0aW9uIHVzZXMgcmFuZG9tIG51bWJlcnMuIFNvIGV2ZXJ5IGluZGl2aWR1YWwgbWF5IGdldCBkaWZmZXJlbnQgcmFuZG9tIHZhbHVlcyB0aHVzIG1ha2luZyB0aGUgdmFsdWVzIHZhcnkgZnJvbSBjb21wdXRlciB0byBjb21wdXRlci4gIikKYGBgCgojIFF1ZXN0aW9uIDYuIEZvciBvdXIgc3BlY2lmaWMgcmFuZG9tIHZhcmlhYmxlLCB3ZSBrbm93IHRoYXQgaXRzIFBERiBpcyBkZWZpbmVkIGJ5IHRoZSBmdW5jdGlvbiAkZih4KSA9IDEweCgxLXgpJC4gVXRpbGl6ZSB0aGUgYWNjZXB0LXJlamVjdCBhbGdvcml0aG0gdG8gZHJhdyBzYW1wbGVzIGZyb20gdGhpcyBkaXN0cmlidXRpb24uIFRha2UgYSBsb29rIGF0IExlY3R1cmUgMTAgc2xpZGUgOCBhbmQgOQoKYGBge3J9CiNBbnN3ZXIKZng8LSBmdW5jdGlvbih4KSB7CiAgcmV0dXJuKDEwICogeCAqICgxIC0geCkpCn0KTTwtIDIuNQpnZW5lcmF0ZV9zYW1wbGUgPC0gZnVuY3Rpb24oKSB7CiAgd2hpbGUoVFJVRSkgewogICAgeDwtIHJ1bmlmKDEpCiAgICB5IDwtIHJ1bmlmKDEsIG1heCA9IE0pCgogICAgaWYgKHkgPD0gZngoeCkpIHsKICAgICAgcmV0dXJuKHgpIAogICAgfQogIH0KfQoKc2V0LnNlZWQoMTIzNDUpIApudW1fc2FtcGxlczwtIDEwMDAKc2FtcGxlczwtIHJlcGxpY2F0ZShudW1fc2FtcGxlcywgZ2VuZXJhdGVfc2FtcGxlKCkpCgpoaXN0KHNhbXBsZXMsIGJyZWFrcyA9IDMwLCBwcm9iYWJpbGl0eSA9IFRSVUUsCiAgICAgbWFpbiA9ICJIaXN0b2dyYW0gb2YgU2FtcGxlcyBmcm9tIGYoeCkgPSAxMHgoMS14KSIpCgoKY3VydmUoZngoeCksIGNvbCA9ICJyZWQiLCBsd2QgPSAyLCBhZGQgPSBUUlVFKQpsZWdlbmQoInRvcHJpZ2h0IiwgbGVnZW5kID0gYygiR2VuZXJhdGVkIFNhbXBsZXMiLCAiZih4KSIpLCBjb2wgPSBjKCJibHVlIiwgInJlZCIpLCBsd2QgPSAyKQpgYGAKCgo=