[racket] A problem with Windows 8?
I don't see how your function count-times implements the required algorithm.
Please explain.
On Mon, May 27, 2013 at 12:01 AM, Tomás Coiro <tomcoiro at hotmail.com> wrote:
> I'm trying to do this Rosetta Code problem:
> http://rosettacode.org/wiki/Average_loop_length
>
> Now, this is my code
> #lang racket
> (require (only-in math factorial))
>
> (define (analytical n)
> (apply +
> (build-list n (compose (lambda (x) (/ (factorial n)
> (expt n x)
> (factorial (- n x))))
> add1))))
>
> (define (count-times x times)
> (if (= 0 (random x))
> (add1 times)
> (count-times x (add1 times))))
>
> (define (test n times)
> (/
> (for/fold ((count 0))
> ((i (in-range times)))
> (count-times n count))
> times))
>
> (define (test-table max-n times)
> (displayln " n\tavg\ttheory\terror")
> (displayln "-------------------------------")
> (for ((i (in-range 1 (add1 max-n))))
> (define average (exact->inexact (test i times)))
> (define theory (exact->inexact (analytical i)))
> (define difference (* (sub1 (/ average theory)) 100))
> (displayln (format "~a\t~a\t~a\t~a%" i average theory difference))))
>
> (test-table 20 100000)
>
>
>
> Im not really worrying about the formatting of the output now, this is the
> result.
> n avg theory error
> -------------------------------
> 1 1.0 1.0 0.0%
> 2 2.00036 1.5 33.35733333333335%
> 3 3.00578 1.8888888888888888 59.12952941176472%
> 4 4.00412 2.21875 80.46738028169015%
> 5 5.0035 2.5104 99.31086679413636%
> 6 6.00016 2.7746913580246915 116.24603337041157%
> 7 7.01433 3.018138700711438 132.4058201283651%
> 8 7.9905 3.2450180053710937 146.23900350550514%
> 9 8.97363 3.4583157448856556 159.47977749778022%
> 10 10.03618 3.66021568 174.19641019624285%
> 11 10.97729 3.852372050737359 184.94885373023365%
> 12 11.96714 4.036073675098951 196.50449826604333%
> 13 12.96795 4.21234791295252 207.8556251283266%
> 14 13.99396 4.382029424383519 219.34883691404528%
> 15 15.09822 4.545807285147228 232.13506541140143%
> 16 15.97676 4.704258247072678 239.62336166263555%
> 17 16.99324 4.857870820801628 249.8083960412072%
> 18 18.00859 5.007063098992893 259.6637318914995%
> 19 18.941 5.152196200957448 267.62963329075353%
> 20 20.05709 5.2935845860009 278.8942950499325%
>
>
> the average loop length is too long, I'm worrying if the problem is my code
> or if it actually is Windows 8.
> I already got a different result with inexact numbers here:
> http://rosettacode.org/wiki/Percentage_difference_between_images#Racket
>
> My question would be first, is my code wrong? (mainly "count-times")
> If it isn't, do you guys get similar results? Could there be a bug in the
> windows 32-bit installation for Windows 8?
>
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users
>