Knuth's algorithm S: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring, marked p2js compatible) |
No edit summary |
||
Line 1,969: | Line 1,969: | ||
freq(8) = 30060 |
freq(8) = 30060 |
||
freq(9) = 29824 |
freq(9) = 29824 |
||
</pre> |
|||
=={{header|Vlang}}== |
|||
{{trans|go}} |
|||
<lang vlang>import rand |
|||
import rand.seed |
|||
fn s_of_ncreator(n int) fn(u8) []u8 { |
|||
mut s := []u8{len: 0, cap:n} |
|||
mut m := n |
|||
return fn[mut s, mut m, n](item u8) []u8 { |
|||
if s.len < n { |
|||
s << item |
|||
} else { |
|||
m++ |
|||
if rand.intn(m) or {0} < n { |
|||
s[rand.intn(n) or {0}] = item |
|||
} |
|||
} |
|||
return s |
|||
} |
|||
} |
|||
fn main() { |
|||
rand.seed(seed.time_seed_array(2)) |
|||
mut freq := [10]int{} |
|||
for _ in 0..int(1e5) { |
|||
s_of_n := s_of_ncreator(3) |
|||
for d := '0'[0]; d < '9'[0]; d++ { |
|||
s_of_n(d) |
|||
} |
|||
for d in s_of_n('9'[0]) { |
|||
freq[d-'0'[0]]++ |
|||
} |
|||
} |
|||
println(freq) |
|||
}</lang> |
|||
Output: |
|||
<pre> |
|||
[30131, 30045, 29880, 30178, 29745, 29890, 30150, 30014, 30068, 29899] |
|||
</pre> |
</pre> |
||