One of n lines in a file: Difference between revisions

Content deleted Content added
added ocaml
→‎Tcl: Added implementation
Line 184: Line 184:
;Sample output:
;Sample output:
<pre>[99833, 100303, 99902, 100132, 99608, 100117, 99531, 100017, 99795, 100762]</pre>
<pre>[99833, 100303, 99902, 100132, 99608, 100117, 99531, 100017, 99795, 100762]</pre>

=={{header|Tcl}}==
<lang tcl>package require Tcl 8.5
proc 1ofN {n} {
for {set line 1} {$line <= $n} {incr line} {
if {rand() < 1.0/[incr fraction]} {
set result $line
}
}
return $result
}

for {set i 0} {$i < 1000000} {incr i} {
incr count([1ofN 10])
}
parray count; # Alphabetic order, but convenient</lang>
Sample output:
<pre>
count(1) = 99862
count(10) = 100517
count(2) = 100545
count(3) = 100339
count(4) = 99636
count(5) = 99920
count(6) = 99263
count(7) = 100283
count(8) = 99871
count(9) = 99764
</pre>