squiggle.bc (824B)
1 scale = 16 2 pi = 4 * atan(1) 3 normal90confidence=1.64485362695 4 define sample_unit_uniform(){ 5 return rand()/maxrand() 6 } 7 define sample_unit_normal(){ 8 u1=sample_unit_uniform() 9 u2=sample_unit_uniform() 10 z = sqrt(-2 * l(u1)) * sin(2 * pi * u2) 11 return z 12 } 13 define sample_uniform(min, max){ 14 return (min + sample_unit_uniform()*(max-min)) 15 } 16 define sample_normal(mean, sigma){ 17 return (mean + sigma * sample_unit_normal()) 18 } 19 define sample_lognormal(logmean, logstd){ 20 return e(sample_normal(logmean, logstd)) 21 } 22 define sample_normal_from_90_confidence_interval(low, high){ 23 mean = (high + low) / 2 24 std = (high - low) / (2 * normal90confidence) 25 return sample_normal(mean, std) 26 } 27 define sample_to(low, high){ 28 loglow = l(low) 29 loghigh = l(high) 30 return e(sample_normal_from_90_confidence_interval(loglow, loghigh)) 31 } 32