Knuth's algorithm S: Difference between revisions
Content added Content deleted
(Updated D code) |
|||
Line 53:
int[] sample;
int i;
i++;
if (i <= n) {
sample ~= item;
} else if (uniform(0.0, 1.0) < (cast(double)n / i)) {
sample = remove(sample, uniform(0, n));
sample ~= item;
Line 78 ⟶ 76:
}
enum nruns =
foreach (trial; 0 .. nruns) {
auto s_of_n2 = s_of_n_creator(3);
Line 88 ⟶ 86:
}
writefln("\nTest item frequencies for %d runs:", nruns);
foreach (
}</lang>
Example output:
Line 96 ⟶ 94:
Item: 1 -> sample: [0, 1]
Item: 2 -> sample: [0, 1, 2]
Item: 3 -> sample: [
Item: 4 -> sample: [
Item: 5 -> sample: [
Item: 6 -> sample: [1,
Item: 7 -> sample: [1,
Item: 8 -> sample: [
Item: 9 -> sample: [
Test item frequencies for
29926 30033 30145 30172 29882 30104 29773 30071 29858 30036</pre>
=={{header|Go}}==
|