Percolation/Mean run density: Difference between revisions
Content added Content deleted
No edit summary |
(Added EchoLisp) |
||
Line 226: | Line 226: | ||
t=500, p=0.90, n= 4096, p(1-p)=0.09000, sim=0.09047, delta=0.5% |
t=500, p=0.90, n= 4096, p(1-p)=0.09000, sim=0.09047, delta=0.5% |
||
t=500, p=0.90, n=16384, p(1-p)=0.09000, sim=0.09007, delta=0.1%</pre> |
t=500, p=0.90, n=16384, p(1-p)=0.09000, sim=0.09007, delta=0.1%</pre> |
||
=={{header|EchoLisp}}== |
|||
<lang scheme> |
|||
;; count 1-runs - The vector is not stored |
|||
(define (runs p n) |
|||
(define ct 0) |
|||
(define run-1 #t) |
|||
(for ([i n]) |
|||
(if (< (random) p) |
|||
(set! run-1 #t) ;; 0 case |
|||
(begin ;; 1 case |
|||
(when run-1 (set! ct (1+ ct))) |
|||
(set! run-1 #f)))) |
|||
(// ct n)) |
|||
;; mean of t counts |
|||
(define (truns p (n 1000 ) (t 1000)) |
|||
(// (for/sum ([i t]) (runs p n)) t)) |
|||
(define (task) |
|||
(for ([p (in-range 0.1 1.0 0.2)]) |
|||
(writeln) |
|||
(writeln '🔸 'p p 'Kp (* p (- 1 p))) |
|||
(for ([n '(10 100 1000)]) |
|||
(printf "\t-- n %5d → %d" n (truns p n))))) |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
(task) ;; t = 1000 |
|||
🔸 p 0.1 Kp 0.09 |
|||
-- n 10 → 0.171 |
|||
-- n 100 → 0.0974 |
|||
-- n 1000 → 0.0907 |
|||
🔸 p 0.3 Kp 0.21 |
|||
-- n 10 → 0.2642 |
|||
-- n 100 → 0.2161 |
|||
-- n 1000 → 0.2105 |
|||
🔸 p 0.5 Kp 0.25 |
|||
-- n 10 → 0.2764 |
|||
-- n 100 → 0.2519 |
|||
-- n 1000 → 0.2503 |
|||
🔸 p 0.7 Kp 0.21 |
|||
-- n 10 → 0.2218 |
|||
-- n 100 → 0.2106 |
|||
-- n 1000 → 0.2098 |
|||
🔸 p 0.9 Kp 0.09 |
|||
-- n 10 → 0.087 |
|||
-- n 100 → 0.0894 |
|||
-- n 1000 → 0.0905 |
|||
</pre> |
|||
=={{header|Fortran}}== |
=={{header|Fortran}}== |