March 2014 update
This commit is contained in:
parent
09687c4926
commit
a25938f123
1846 changed files with 21876 additions and 5203 deletions
|
|
@ -8,7 +8,7 @@ auto sofN_creator(in int n) {
|
|||
i++;
|
||||
if (i <= n)
|
||||
sample ~= item;
|
||||
else if (uniform(0.0, 1.0) < (cast(double)n / i))
|
||||
else if (uniform(0.0, 1.0) < (double(n) / i))
|
||||
sample[uniform(0, n)] = item;
|
||||
return sample;
|
||||
};
|
||||
|
|
@ -18,12 +18,12 @@ void main() {
|
|||
enum nRuns = 100_000;
|
||||
size_t[10] bin;
|
||||
|
||||
foreach (trial; 0 .. nRuns) {
|
||||
auto sofn = sofN_creator(3);
|
||||
foreach (immutable trial; 0 .. nRuns) {
|
||||
immutable sofn = sofN_creator(3);
|
||||
int[] sample;
|
||||
foreach (item; 0 .. bin.length)
|
||||
foreach (immutable item; 0 .. bin.length)
|
||||
sample = sofn(item);
|
||||
foreach (s; sample)
|
||||
foreach (immutable s; sample)
|
||||
bin[s]++;
|
||||
}
|
||||
writefln("Item counts for %d runs:\n%s", nRuns, bin);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import std.stdio, std.random, std.algorithm;
|
||||
|
||||
double random01(ref Xorshift rng) {
|
||||
immutable r = rng.front / cast(double)rng.max;
|
||||
immutable r = rng.front / double(rng.max);
|
||||
rng.popFront;
|
||||
return r;
|
||||
}
|
||||
|
|
@ -14,7 +14,7 @@ struct SOfN(size_t n) {
|
|||
i++;
|
||||
if (i <= n)
|
||||
sample[i - 1] = item;
|
||||
else if (rng.random01 < (cast(double)n / i))
|
||||
else if (rng.random01 < (double(n) / i))
|
||||
sample[uniform(0, n, rng)] = item;
|
||||
return sample[0 .. min(i, $)];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue