[racket] A problem with Windows 8?

From: Tomás Coiro (tomcoiro at hotmail.com)
Date: Sun May 26 18:01:12 EDT 2013

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>

Posted on the users mailing list.