Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
29
Task/Knuths-algorithm-S/Tcl/knuths-algorithm-s.tcl
Normal file
29
Task/Knuths-algorithm-S/Tcl/knuths-algorithm-s.tcl
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
package require Tcl 8.6
|
||||
|
||||
oo::class create SofN {
|
||||
variable items size count
|
||||
constructor {n} {
|
||||
set size $n
|
||||
}
|
||||
method item {item} {
|
||||
if {[incr count] <= $size} {
|
||||
lappend items $item
|
||||
} elseif {rand()*$count < $size} {
|
||||
lset items [expr {int($size * rand())}] $item
|
||||
}
|
||||
return $items
|
||||
}
|
||||
}
|
||||
|
||||
# Test code
|
||||
for {set i 0} {$i < 100000} {incr i} {
|
||||
set sOf3 [SofN new 3]
|
||||
foreach digit {0 1 2 3 4 5 6 7 8 9} {
|
||||
set digs [$sOf3 item $digit]
|
||||
}
|
||||
$sOf3 destroy
|
||||
foreach digit $digs {
|
||||
incr freq($digit)
|
||||
}
|
||||
}
|
||||
parray freq
|
||||
Loading…
Add table
Add a link
Reference in a new issue