π day (Montecarlo method)

let range min max = List.init (max + 1 - min) (fun x -> min + x)
let pow b e = int_of_float (float_of_int b ** float_of_int e)

let pi points =
let rec calc a c =
if c <= 0
then a
else (
let x = Random.float 1.0 ** 2.0 in
let y = Random.float 1.0 ** 2.0 in
let r = if x +. y <= 1.0 then 1.0 else 0.0 in
calc (a +. r) (c - 1))
in
let n = calc 0.0 points in
4.0 *. n /. float_of_int points
;;

let points = ref 10
let report = ref false

let args_parse =
let opts = [ "-p", Arg.Set_int points, ": points"; "-r", Arg.Set report, ": report" ] in
let usage = "pigreco\nusage: " ^ Sys.argv.(0) ^ " [-p points]" ^ " [-r report]" in
let anons _ = () in
Arg.parse opts anons usage
;;

let () =
Random.self_init ();
if !report
then (
let rows = range 1 6 in
let columns = range 1 3 in
let open List in
let columns' points = fold_left (fun acc _ -> pi points :: acc) [] columns |> rev in
let rows' =
fold_left
(fun acc r ->
let n = int_of_float (float_of_int !points *. (10.0 ** float_of_int r)) in
columns' n :: acc)
[]
rows
|> rev
in
iteri
(fun i r ->
let values = map (fun v -> Printf.sprintf "%f" v) r in
let values' = String.concat " | " values in
Printf.printf "points: %#12d | %s\n" (!points * (pow 10 (i + 1))) values')
rows')
else (
let pi_m = pi !points in
Printf.printf "Points: %d\nPi: %f\n" !points pi_m)
;;
➜ ./pigreco -r
points: 100 | 2.840000 | 3.240000 | 3.280000
points: 1_000 | 3.116000 | 3.116000 | 3.176000
points: 10_000 | 3.177200 | 3.132800 | 3.137600
points: 100_000 | 3.144560 | 3.153800 | 3.147280
points: 1_000_000 | 3.142216 | 3.141920 | 3.142404
points: 10_000_000 | 3.141078 | 3.140760 | 3.142664

📣📆 #12D #Salvaterra | Concentración en resposta á falta de pediatra.

📌 Centro de saúde

🕰️ 20h

Convoca a Plataforma en Defensa da Sanidade Pública do Condado e Paradanta.

#12D Concentración: Día de las Víctimas del Franquismo

Concentración frente al Tribunal Supremo contra la amnistía de los crímenes del franquismo

Carabanchel.net @carabanchelnet
12-O: combatre la hispanitat i l’extrema dreta

Cal denunciar el caràcter neocolonial del projecte de la hispanitat que avui aglutina la dreta, la ultradreta i curiosos aliats dins la trama roig-i-bruna

Crític
AnirbanBandyopadhyay on Twitter

“1D=length, 2D=area, 3D=volume, 4D=time crystal, 5D=singularity chain, 6D=loops of world line, 7D=morphogenesis loop, 8D=undefined boundary as infinity, 9D=invariant, 10D=symmetry temple, 11D=normalization, 12D=density of prime. We reject the existing formulation of 12D (1/3)”

Twitter

📣📆 #12D #Compostela | Asemblea aberta para artellar unha resposta fronte ás obras na facultade para facela máis atractiva ao turismo.

📌 Aula 7 da Facultade de Xeografía e Historia

🕰️ 19:30h

🔉 #AlertaDesnonament

📆 DILLUNS 12/12 #12D #SantAndreu

📌 Lloc: C. Torroella de Montgrí, 3
⏰ 11:00 h
🚇 <M> L1 Fabra i Puig

#NoMarxem
#CapMésDesnonament

✊ Sindicat d'Habitatge de Sant Andreu

📣📆 #12D #Compostela | Palestras sobre a nova Lei de Universidades, da man de Daniel Cao, e sobre a endogamia universitaria e falta de transparencia na adxudicación de prazas, da man de José Mateos.

📌 Aula Magna da Facultade de Matemáticas

🕰️ 17:30h

Organiza a Asemblea de Investigadoras de Compostela.

📣📆 #12D #ARamallosa | Concentración en defensa das pensións públicas e contra a súa privatización.

📌 Capela de San Campio

🕰️ 12h

Convoca @modepen.

#12d
Вот они сами обезумили
И зло творят руками безумных иуд
И это начало конца
И начало нового начала
Не бойся ибо что должно быть то будет
И будут бежать и не убегут
Будут просить и не услышат их
Как отмеряли так и отмерено будет
Вой и рев их не устрашит не кого
Вышли мы на берег у вод от красного и до льдов
И в дома вступили родные но чужие