/* Anne Obborn: https://twitter.com/AnneOgborn/status/1560681513548759042 """ I offer a game- flip a coin. Heads, I pay $1 and the game ends. Tails, we flip again- if Heads, I pay $2 and game ends, Tails, we flip again, doubling each time. What would you pay me to play this game? """ Comment by Richard Barrell: """ Roughly 0.5*log2(your bankroll) Each round has an EV of $0.50 and the number of rounds is log2(the maximum possible amount of money you can pay out) """ * Approx 0.1 [program = 0.5 * log2(N * 4),res = 5.982892142331043,count = 1] gen = 32 [program = log2(N * 4.161105861031034) / 2,res = 6.011375638269768,count = 1] gen = 53 [program = (log2(N) + 2) * (N / N * 0.5),res = 5.982892142331043,count = 1] * Approx 0.01 gen 17 [program = 0.5 * log2(N * 4),res = 5.982892142331043,count = 1] gen = 19 [program = log2(N) / 2 - log2(0.5),res = 5.982892142331043,count = 1] gen = 50 [program = 0.5 * log2(3.970501084798247 * N),res = 5.977552687190866,count = 1] With num_gens=100 [program = log2(2) + (log2(N) / 2 + (N - N)),res = 5.982892142331043,count = 39] [program = log2(N) / 2 + (N - N) + log2(2),res = 5.982892142331043,count = 32] [program = N / N + (log2(N) / 2 + (N - N)),res = 5.982892142331043,count = 31] [program = log2(N) / 2 + (N - N) + N / N,res = 5.982892142331043,count = 31] [program = N / (N + N) * 2 + (log2(N) / 2 + (N - N)),res = 5.982892142331043,count = 30] [program = log2(N) / 2 + (N - N) + N * (0 + N) / N / N,res = 5.982892142331043,count = 29] [program = log2(N) / 2 + (N - N) + N / (N + N) * 2,res = 5.982892142331043,count = 28] [program = log2(N) / 2 + (N - N) - -1,res = 5.982892142331043,count = 19] [program = 0 * 0 - -1 + (log2(N) / 2 + (N - N)),res = 5.982892142331043,count = 19] [program = log2(N) / 2 + (N - N) + (N - N - -1),res = 5.982892142331043,count = 12] [program = N - N - -1 + (log2(N) / 2 + (N - N)),res = 5.982892142331043,count = 10] [program = N * (0 + N) / N / N + (log2(N) / 2 + (N - N)),res = 5.982892142331043,count = 5] [program = log2(N) / 2 + (N - N) - -1 * N / N,res = 5.982892142331043,count = 3] resultMap = [5.982892142331043 = 13] See my WebPPL model coin_flip_game.wppl */ import util. data(coin_flip_game,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- games(Games), Data = [ [[N],Est] : [N,Est] in Games], Ops = [+,/,-,*,log2,log], Constants = [0.5,2,4] ++ [random(-10,10) : _ in 1..10], Vars = ['N'], Unknown = [1000], MaxSize = 15, Params = new_map([approx=0.01,num_gens=100]). % n,expectation games(Data) => Data = chunks_of([ 1,1, 2,1.5, 4,2, 8,2.5000000000000004, 16,3.000000000000001, 32,3.5000000000000004, 64,4.000000000000001, 128,4.500000000000001, 256,5.000000000000001, 512,5.5, 1024,6.000000000000001, 2048,6.500000000000002, 4096,7.000000000000002, 8192,7.500000000000002, 16384,8.000000000000002, 32768,8.500000000000002, 65536,9.000000000000002, 131072,9.500000000000002, 262144,10.000000000000002, 524288,10.5 ],2).