[racket] A problem with Windows 8?
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20130526/5c39c0f9/attachment-0001.html>