Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
42
Task/Average-loop-length/PicoLisp/average-loop-length.l
Normal file
42
Task/Average-loop-length/PicoLisp/average-loop-length.l
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
(scl 4)
|
||||
(seed (in "/dev/urandom" (rd 8)))
|
||||
|
||||
(de fact (N)
|
||||
(if (=0 N) 1 (apply * (range 1 N))) )
|
||||
|
||||
(de analytical (N)
|
||||
(sum
|
||||
'((I)
|
||||
(/
|
||||
(* (fact N) 1.0)
|
||||
(** N I)
|
||||
(fact (- N I)) ) )
|
||||
(range 1 N) ) )
|
||||
|
||||
(de testing (N)
|
||||
(let (C 0 N (dec N) X 0 B 0 I 1000000)
|
||||
(do I
|
||||
(zero B)
|
||||
(one X)
|
||||
(while (=0 (& B X))
|
||||
(inc 'C)
|
||||
(setq
|
||||
B (| B X)
|
||||
X (** 2 (rand 0 N)) ) ) )
|
||||
(*/ C 1.0 I) ) )
|
||||
|
||||
(let F (2 8 8 6)
|
||||
(tab F "N" "Avg" "Exp" "Diff")
|
||||
(for I 20
|
||||
(let (A (testing I) B (analytical I))
|
||||
(tab F
|
||||
I
|
||||
(round A 4)
|
||||
(round B 4)
|
||||
(round
|
||||
(*
|
||||
(abs (- (*/ A 1.0 B) 1.0))
|
||||
100 )
|
||||
2 ) ) ) ) )
|
||||
|
||||
(bye)
|
||||
Loading…
Add table
Add a link
Reference in a new issue