Knuth's algorithm S: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
|||
Line 1,142: | Line 1,142: | ||
[30172, 29856, 30132, 29884, 29818, 30220, 29900, 30069, 29869, 30080] |
[30172, 29856, 30132, 29884, 29818, 30220, 29900, 30069, 29869, 30080] |
||
</pre> |
</pre> |
||
=={{header|Nim}}== |
|||
<lang Nim>import random |
|||
func sOfNCreator[T](n: Positive): proc(item: T): seq[T] = |
|||
var sample = newSeqOfCap[T](n) |
|||
var i = 0 |
|||
result = proc(item: T): seq[T] = |
|||
inc i |
|||
if i <= n: |
|||
sample.add(item) |
|||
elif rand(1..i) <= n: |
|||
sample[rand(n - 1)] = item |
|||
sample |
|||
when isMainModule: |
|||
randomize() |
|||
echo "Digits counts for 100_000 runs:" |
|||
var hist: array[10, Natural] |
|||
for _ in 1..100_000: |
|||
let sOfN = sOfNCreator[Natural](3) |
|||
for i in 0..8: |
|||
discard sOfN(i) |
|||
for val in sOfN(9): |
|||
inc hist[val] |
|||
for n, count in hist: |
|||
echo n, ": ", count</lang> |
|||
{{out}} |
|||
<pre>Digits counts for 100_000 runs: |
|||
0: 30092 |
|||
1: 29906 |
|||
2: 29956 |
|||
3: 29896 |
|||
4: 30151 |
|||
5: 30000 |
|||
6: 30267 |
|||
7: 29853 |
|||
8: 30186 |
|||
9: 29693</pre> |
|||
=={{header|Objective-C}}== |
=={{header|Objective-C}}== |