Essays/Coin Flipping
< Essays
Jump to navigation
Jump to search
What is your chance to get 3 heads in a row from ten coin flips?
There was an original blog post to answer that question with Monte Carlo simulation in Python. How can we do that in J?
Random Coin Flips
Let's say 1 signifies head and 0 tail. Then we could easily roll a sequence of coin flipping as:
?.30$ 2 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1
Counting consecutive heads
How do we count number of consecutive heads?
(* >:)/\.&.|. ?.30$2 0 1 0 1 2 3 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 2 3 0 0 0 0 0 1 2
Notice the usage of /\.&.|., which is a common phrase in J to do operations accumulatively.
Maximal number of consecutive heads
It's easy at this stage.
>./ (* >:)/\.&.|. ?.30$2 3
Were there 3 heads in a row?
3<: >./ (* >:)/\.&.|. ?.30$2 1
Monte Carlo
How can we easily move what we've done to a multiple of experiments, that is Monte Carlo simulations?
i%~ +/ 3<: ([:>./(* >:)/\.&.|.)"1 ?.((i=.1000000), 10)$2 0.508196
Notice the rank("1) applied to the previous expression to make it applied each row.
Originally written by June Kim. Variations and suggestions are welcome.