[your code here]

H. S. Teoh hsteoh at quickfur.ath.cx
Fri Feb 17 17:39:10 PST 2012

// Outputs a randomly selected line from standard input with equal
// likelihood.
import std.random;
import std.stdio;

void main() {
	auto n = 0;
	string choice;
	foreach (line; stdin.byLine()) {
		if (uniform(0,n) == 0)
			choice = line.idup;

P.S. Proof that the probability any line is selected is exactly 1/n
(where n is the total number of lines read) is left as an exercise for
the reader. ;-)

P.S.S. The .idup is a bit ugly, but necessary, since apparently byLine()
calls readln() with a static buffer, so choice will be silently
overwritten if the .idup is omitted.


Ruby is essentially Perl minus Wall.

More information about the Digitalmars-d mailing list