Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
25
Task/Knuths-algorithm-S/OCaml/knuths-algorithm-s.ml
Normal file
25
Task/Knuths-algorithm-S/OCaml/knuths-algorithm-s.ml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
let s_of_n_creator n =
|
||||
let i = ref 0
|
||||
and sample = ref [| |] in
|
||||
fun item ->
|
||||
incr i;
|
||||
if !i <= n then sample := Array.append [| item |] !sample
|
||||
else if Random.int !i < n then !sample.(Random.int n) <- item;
|
||||
!sample
|
||||
|
||||
let test n items_set =
|
||||
let s_of_n = s_of_n_creator n in
|
||||
Array.fold_left (fun _ v -> s_of_n v) [| |] items_set
|
||||
|
||||
let () =
|
||||
Random.self_init ();
|
||||
let n = 3 in
|
||||
let num_items = 10 in
|
||||
let items_set = Array.init num_items (fun i -> i) in
|
||||
let results = Array.make num_items 0 in
|
||||
for i = 1 to 100_000 do
|
||||
let res = test n items_set in
|
||||
Array.iter (fun j -> results.(j) <- succ results.(j)) res
|
||||
done;
|
||||
Array.iter (Printf.printf " %d") results;
|
||||
print_newline ()
|
||||
Loading…
Add table
Add a link
Reference in a new issue