Advertisement
Guest User

Untitled

a guest
Mar 28th, 2024
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. using StatsBase, Combinatorics
  2.  
  3. function gencoins(ncoin = 2)
  4. # Double-tailed, Fair, Double-headed
  5. T = ["T", "T"]
  6. F = ["H", "T"]
  7. H = ["H", "H"]
  8.  
  9. # Get names for the sets of coins (eg, dTF = double-tailed + fair)
  10. cnames = collect(with_replacement_combinations(["dT", "F", "dH"], ncoin))
  11. name_str = []
  12. for i in eachindex(cnames)
  13. name_str = vcat(name_str, reduce(string, cnames[i]))
  14. end
  15.  
  16. # Get combinations of the three types of coins
  17. combs = collect(with_replacement_combinations([T, F, H], ncoin))
  18.  
  19. # Enumerate each side of the coins to use for permutations later
  20. # Calculate the overall probability of heads for each combination
  21. n = length(combs[1])*length(combs[1][1])
  22. ecombs = phead = []
  23. for i in eachindex(combs)
  24. sides = reduce(vcat, combs[i])
  25. phead = vcat(phead, mean(sides .== "H"))
  26. ecombs = vcat(ecombs, [string.(sides, 1:n)])
  27. end
  28.  
  29. return (names = name_str, ecombs = ecombs, phead = phead)
  30. end
  31.  
  32.  
  33. ncoin = 3
  34. coins = gencoins(ncoin);
  35.  
  36.  
  37. # julia> coins.names
  38. # 10-element Vector{Any}:
  39. # "dTdTdT"
  40. # "dTdTF"
  41. # "dTdTdH"
  42. # "dTFF"
  43. # "dTFdH"
  44. # "dTdHdH"
  45. # "FFF"
  46. # "FFdH"
  47. # "FdHdH"
  48. # "dHdHdH"
  49.  
  50. # julia> coins.ecombs
  51. # 10-element Vector{Any}:
  52. # ["T1", "T2", "T3", "T4", "T5", "T6"]
  53. # ["T1", "T2", "T3", "T4", "H5", "T6"]
  54. # ["T1", "T2", "T3", "T4", "H5", "H6"]
  55. # ["T1", "T2", "H3", "T4", "H5", "T6"]
  56. # ["T1", "T2", "H3", "T4", "H5", "H6"]
  57. # ["T1", "T2", "H3", "H4", "H5", "H6"]
  58. # ["H1", "T2", "H3", "T4", "H5", "T6"]
  59. # ["H1", "T2", "H3", "T4", "H5", "H6"]
  60. # ["H1", "T2", "H3", "H4", "H5", "H6"]
  61. # ["H1", "H2", "H3", "H4", "H5", "H6"]
  62.  
  63. # julia> coins.phead
  64. # 10-element Vector{Any}:
  65. # 0.0
  66. # 0.16666666666666666
  67. # 0.3333333333333333
  68. # 0.3333333333333333
  69. # 0.5
  70. # 0.6666666666666666
  71. # 0.5
  72. # 0.6666666666666666
  73. # 0.8333333333333334
  74. # 1.0
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement