Demo: Randomness

Author
Affiliation

Prof. Baumer

Smith College

Published

Feb 23, 2026

Human flips

First, we pull the contents of the Google spreadsheet into R. Make sure that you have curated the results a bit beforehand.

# Import the "random" string directly from Google
library(tidyverse)
library(googlesheets4)
gs4_deauth()
key <- "1wY3g7GSmii74oEOTtz2Id3B678jmfG_Ri4utO1jLn70"
ds <- read_sheet(key) |>
 select(String, Length) |>
 na.omit()

Next, we want to concatenate all of the T’s and H’s into one long string.

# Convert the random string into runs
human_flips <- ds |>
  pull(String) |>
  paste(collapse = "") |>
  tolower() |>
  str_split_1("")
  
human_flips
   [1] "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h" "h" "t" "t" "t" "t" "t"
  [19] "h" "t" "h" "t" "h" "h" "t" "h" "t" "t" "t" "t" "t" "h" "h" "h" "t" "h"
  [37] "h" "t" "h" "t" "h" "t" "t" "t" "h" "t" "h" "h" "t" "h" "h" "h" "t" "h"
  [55] "h" "t" "t" "t" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "h" "h" "h"
  [73] "t" "h" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "t" "t" "t" "h"
  [91] "t" "h" "t" "t" "t" "t" "t" "h" "t" "h" "t" "t" "t" "t" "h" "h" "h" "h"
 [109] "t" "h" "h" "t" "h" "h" "t" "h" "h" "h" "t" "t" "h" "t" "h" "t" "h" "h"
 [127] "t" "h" "h" "h" "t" "h" "h" "t" "t" "t" "h" "h" "t" "h" "h" "t" "h" "t"
 [145] "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "t" "h" "t" "h"
 [163] "h" "t" "h" "t" "h" "h" "h" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t"
 [181] "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "h" "t" "t" "t" "t" "t" "h" "t"
 [199] "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "t" "t" "t" "t"
 [217] "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "h" "t" "h" "t" "h"
 [235] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t"
 [253] "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h"
 [271] "h" "h" "h" "h" "h" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "t"
 [289] "t" "t" "h" "t" "h" "h" "h" "h" "h" "t" "t" "h" "h" "t" "t" "t" "h" "h"
 [307] "h" "h" "t" "h" "t" "h" "h" "h" "h" "h" "t" "t" "h" "h" "t" "h" "h" "t"
 [325] "t" "h" "t" "h" "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t"
 [343] "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "t" "h" "t" "h"
 [361] "t" "h" "h" "h" "h" "h" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t"
 [379] "h" "h" "h" "h" "h" "t" "h" "h" "h" "h" "t" "t" "t" "t" "t" "t" "h" "h"
 [397] "h" "h" "h" "h" "t" "t" "h" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t"
 [415] "h" "t" "h" "h" "t" "h" "h" "h" "h" "h" "h" "h" "t" "h" "h" "h" "h" "t"
 [433] "h" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "t" "h" "t" "h" "t" "t"
 [451] "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "h"
 [469] "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "t" "h" "t" "t" "t" "t" "h" "h"
 [487] "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h"
 [505] "t" "t" "h" "t" "h" "t" "h" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h"
 [523] "t" "h" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t"
 [541] "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
 [559] "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "h" "h" "h" "t" "h"
 [577] "t" "h" "t" "h" "t" "h" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h"
 [595] "t" "h" "t" "h" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h"
 [613] "t" "t" "t" "t" "h" "t" "h" "h" "h" "h" "t" "t" "t" "h" "t" "h" "h" "h"
 [631] "t" "h" "h" "t" "h" "t" "t" "h" "t" "h" "h" "h" "h" "t" "h" "h" "h" "t"
 [649] "h" "t" "t" "h" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "t" "t"
 [667] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "t"
 [685] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
 [703] "h" "t" "h" "t" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "h" "h" "h"
 [721] "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h"
 [739] "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "t"
 [757] "t" "t" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "t"
 [775] "h" "t" "h" "t" "h" "t" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
 [793] "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t"
 [811] "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "h" "t" "h" "t"
 [829] "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h"
 [847] "t" "h" "t" "h" "t" "t" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t"
 [865] "h" "t" "h" "t" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
 [883] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "h" "t"
 [901] "h" "t" "h" "t" "t" "h" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "h" "h"
 [919] "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "h" "t" "h"
 [937] "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "h"
 [955] "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h"
 [973] "t" "t" "t" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "t" "h" "t"
 [991] "t" "t" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h"
[1009] "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h"
[1027] "t" "h" "t" "h" "t" "t" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "h" "t"
[1045] "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h"
[1063] "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "t"
[1081] "t" "h" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "t"
[1099] "h" "t" "h" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h"
[1117] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "h" "h" "h"
[1135] "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "t" "h"
[1153] "t" "t" "t" "t" "t" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1171] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h"
[1189] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h"
[1207] "t" "h" "t" "t" "h" "h" "t" "t" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h"
[1225] "t" "h" "t" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h"
[1243] "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "h"
[1261] "h" "t" "h" "t" "t" "t" "h" "t" "h" "h" "t" "h" "h" "h" "t" "t" "t" "h"
[1279] "h" "h" "t" "h" "h" "h" "t" "h" "h" "h" "t" "t" "h" "h" "t" "h" "h" "t"
[1297] "h" "h" "h" "t" "t" "h" "h" "t" "h" "h" "t" "h" "h" "h" "t" "h" "t" "h"
[1315] "h" "h" "t" "h" "h" "h" "t" "h" "h" "h" "h" "t" "t" "h" "t" "t" "t" "t"
[1333] "h" "t" "t" "h" "h" "t" "t" "h" "t" "t" "h" "h" "t" "h" "t" "h" "h" "t"
[1351] "h" "t" "h" "h" "t" "h" "h" "h" "t" "h" "t" "t" "h" "h" "t" "h" "t" "h"
[1369] "h" "h" "t" "h" "t" "t" "h" "t" "t" "h" "t" "h" "h" "t" "h" "t" "h" "h"
[1387] "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h"
[1405] "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h"
[1423] "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h" "t"
[1441] "h" "t" "h" "t" "h" "t" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1459] "h" "t" "h" "t" "h" "h" "t" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t"
[1477] "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1495] "h" "t" "h" "h" "t" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h"
[1513] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h"
[1531] "h" "h" "t" "h" "t" "t" "t" "h" "h" "h" "t" "h" "h" "t" "h" "h" "t" "h"
[1549] "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "h" "h" "h"
[1567] "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "t" "h" "h" "t" "h" "t"
[1585] "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "t" "h" "t" "h" "h" "t"
[1603] "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1621] "h" "t" "h" "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h"
[1639] "h" "h" "h" "h" "t" "h" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "h" "h"
[1657] "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "t" "t" "t" "t" "h" "h" "h" "h"
[1675] "h" "h" "t" "t" "h" "t" "h" "h" "h" "h" "h" "h" "t" "t" "t" "h" "t" "h"
[1693] "h" "h" "h" "h" "t" "h" "t" "t" "t" "h" "h" "t" "h" "t" "h" "t" "h" "h"
[1711] "h" "t" "t" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "h" "h" "h"
[1729] "h" "t" "t" "t" "t" "t" "h" "h" "h" "t" "t" "t" "h" "h" "t" "h" "h" "h"
[1747] "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "t" "t" "h" "t" "h" "t" "h" "t"
[1765] "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t"
[1783] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1801] "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h"
[1819] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t"
[1837] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1855] "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1873] "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "t" "t" "h" "h" "t" "h" "t" "h"
[1891] "t" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "h" "t"
[1909] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "t" "h"
[1927] "t" "t" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[1945] "t" "t" "h" "t" "t" "h" "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h"
[1963] "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "t" "t"
[1981] "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "h" "t" "t" "h" "t"
[1999] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h"
[2017] "h" "h" "h" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "h" "h" "t" "t"
[2035] "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "t"
[2053] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[2071] "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "h" "t" "h" "t"
[2089] "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t"
[2107] "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "t" "t" "t" "t" "t"
[2125] "h" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "t" "h" "h" "h" "h" "h" "h"
[2143] "h" "h" "h" "h" "t" "t" "t" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[2161] "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "t"
[2179] "h" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h"
[2197] "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t"
[2215] "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h" "t" "t" "h" "t" "h"
[2233] "t" "h" "t" "h" "h" "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t"
[2251] "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "h" "t" "t" "h" "t" "h"
[2269] "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "t" "t" "h" "t" "h" "t" "h"
[2287] "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h" "t"
[2305] "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h"
[2323] "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "t"
[2341] "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h"
[2359] "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h"
[2377] "t" "h" "t" "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "t" "h" "t" "h" "t"
[2395] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "t" "t" "t" "h"
[2413] "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "h" "h" "t" "t" "h" "h" "h"
[2431] "t" "t" "h" "h" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[2449] "h" "t" "t" "t" "t" "t" "h" "t" "h" "t" "t" "t" "t" "t" "t" "h" "h" "h"
[2467] "h" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "h" "t"
[2485] "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "t" "t" "t" "h" "h" "t"
[2503] "h" "h" "h" "t" "h" "h" "t" "h" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h"
[2521] "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "t" "h" "h" "t" "h" "t" "h" "t"
[2539] "h" "t" "h" "t" "t" "t" "h" "h" "h" "t" "h" "h" "h" "t" "h" "t" "t" "t"
[2557] "h" "t" "h" "h" "h" "t" "h" "t" "h" "h" "h" "h" "t" "h" "t" "h" "t" "t"
[2575] "t" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "t" "t"
[2593] "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "t" "h" "t" "h"
[2611] "t" "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "t" "h" "t"
[2629] "h" "t" "t" "h" "h" "t" "h" "t" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h"
[2647] "t" "h" "h" "h" "t" "h" "t" "h" "h" "h" "t" "t" "t" "t" "h" "h" "h" "t"
[2665] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h" "t" "h" "t" "h"
[2683] "h" "t" "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "h" "t" "h" "h" "h" "h"
[2701] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t"
[2719] "h" "h" "t" "t" "t" "t" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[2737] "h" "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "t" "h" "t" "h" "t"
[2755] "h" "t" "h" "h" "t" "t" "t" "t" "t" "t" "h" "t" "h" "t" "h" "h" "h" "t"
[2773] "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h" "t" "h" "t"
[2791] "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t"
[2809] "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h"
[2827] "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "h" "h" "t" "h" "t" "h" "t" "h"
[2845] "t" "h" "t" "h" "t" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h"
[2863] "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h"
[2881] "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h"
[2899] "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "t" "h" "t" "h" "t"
[2917] "t" "h" "t" "h" "t" "h" "t" "t" "h" "t" "h" "t" "t" "t" "h" "t" "t" "h"
[2935] "h" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "t" "h" "h" "h" "t"
[2953] "h" "h" "t" "h" "t" "h" "h" "t" "h" "h" "h" "h" "t" "h" "t" "h" "t" "h"
[2971] "h" "h" "t" "t" "t" "t" "t" "t" "t" "h" "h" "h" "t" "h" "t" "h" "t" "h"
[2989] "t" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "h" "t"
[3007] "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t" "t" "t" "t" "t" "t"
[3025] "t" "h" "t" "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h"
[3043] "h" "h" "t" "h" "h" "t" "h" "t" "t" "t" "h" "t" "h" "t" "h" "t" "h" "h"
[3061] "t" "h" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "h" "t" "h" "h" "h" "h"
[3079] "h" "h" "h" "h" "h" "h" "h" "t" "t" "t" "t" "t" "t" "h" "h" "h" "h" "h"
[3097] "h" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h"
[3115] "h" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "h"
[3133] "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "h" "h"
[3151] "h" "h" "h" "t" "h" "h" "h" "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "h"
[3169] "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t"
[3187] "t" "h" "t" "h" "h" "t" "h" "h" "h" "t" "h" "h" "t" "h" "t" "h" "h" "t"
[3205] "h" "h" "t" "h" "h" "h" "h" "h" "h" "t" "h" "h" "t" "h" "t" "h" "h" "h"
[3223] "h" "h" "h" "t" "h" "t" "h" "h" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h"
[3241] "h" "h" "h" "h" "h" "h" "h" "h" "t" "h" "h" "h" "h" "h" "h" "h" "t" "h"
[3259] "h" "h" "h" "t" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "t" "t" "t" "t"
[3277] "t" "t" "t" "t" "t" "h" "t" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h"
[3295] "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h"
[3313] "h" "h" "t" "h" "h" "h" "h" "h" "h" "h" "h" "h" "h" "t" "t" "h" "t" "h"
[3331] "t" "h" "t" "h" "t" "h" "h" "t" "h" "t" "t" "t" "t" "h" "h" "t" "h" "t"
[3349] "h" "t" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "t" "t" "h" "t" "h" "t"
[3367] "h" "t" "h" "t" "t" "h" "t" "h" "h" "t" "h" "h" "h" "h" "h" "h" "t" "h"
[3385] "t" "h" "t" "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "t" "h" "t" "h" "t"
[3403] "h" "h" "h" "h" "t" "h" "t" "t" "t" "h" "t" "h" "t" "t" "t" "h" "h" "h"
[3421] "t" "t" "h" "t" "t" "h" "h" "t" "h" "h" "h" "h" "t" "h" "t" "h" "t" "t"
[3439] "h" "h" "h" "t" "t" "t" "t" "h" "h" "h" "h" "h" "h" "t" "h" "t" "h" "t"
[3457] "h" "t" "h" "t" "h" "h" "t" "h" "h" "t" "h" "h" "t" "t" "t" "h" "h" "t"
[3475] "h"

How long is this string?

# How many are there?
n <- length(human_flips)

Now we need to figure out the length of the runs. The rle() function will make this easy for us, but I’m going to extract the information I need with a custom function called rle_table().

rle_table <- function(x) {
  x |>
    rle() |>
    pluck("lengths") |>
    table() |> 
    as.data.frame() |>
    rename(length = Var1) |>
    mutate(length = as.numeric(length))
}


# Find the runs
human_runs <- human_flips |>
  rle_table()

Let’s examine a histogram of the runs

ggplot(data = human_runs, aes(x = length, y = Freq)) +
  geom_col()

Pseudorandom flips

Now that we’ve collected the “random” string of T’s and H’s, we’ll use R to create a pseudorandom string of T’s and H’s on the same length. Note the use of the sample() function.

pseudo_flips <- sample(c("t", "h"), size = n, replace = TRUE)
pseudo_runs <- pseudo_flips |>
  rle_table()

Probability theory

Finally, we’ll add a third method for computing streak lengths. The following data frame comes directly from probability theory.

# Expected number of runs of length k
random_runs <- human_runs |>
  full_join(pseudo_runs, by = join_by(length)) |>
  arrange(length)

random_runs <- random_runs |>
  mutate(pr_k = (n - length - 1) * 2 * (1/2)^(length+2))

random_runs
   length Freq.x Freq.y         pr_k
1       1   1645    822 8.682500e+02
2       2    275    455 4.340000e+02
3       3     91    229 2.169375e+02
4       4     39     98 1.084375e+02
5       5     21     55 5.420312e+01
6       6     24     25 2.709375e+01
7       7     10     16 1.354297e+01
8       8      8     11 6.769531e+00
9       9     11      2 3.383789e+00
10     10     10      1 1.691406e+00
11     11      4      1 8.454590e-01
12     12      2     NA 4.226074e-01
13     13      1     NA 2.112427e-01
14     14      2     NA 1.055908e-01
15     15      1     NA 5.278015e-02
16     16      2     NA 2.638245e-02
17     17      1     NA 1.318741e-02
18     18      1     NA 6.591797e-03
19     19      1     NA 3.294945e-03
20     20      1     NA 1.646996e-03
21     21      1     NA 8.232594e-04

Finally, plot all three frequencies. Which one is which?????

# Plot the frequency of runs for both samples
random_runs |> 
  pivot_longer(-length, names_to = "src", values_to = "freq") |>
  ggplot(aes(x = length, y = freq, color = src)) + 
  geom_line() + 
  scale_x_continuous("Length of Run") + 
  scale_y_continuous("Frequency of Run") +
  scale_color_discrete(guide = "none") + 
  ggtitle(paste("Number of Flips =", n))