ネタ元 に触発されて色々one-linerで書いてみた。 お題としては「100万回乱数生成を行いその平均値を計算する」です。
Perl (5.10.1)
perl -MList::Util=sum -E 'say((sum map rand,1..1e6)/1e6)'
List::Util++
Python (2.6.4)
python -c 'import random as r;print sum([r.random() for x in xrange(1000000)])/1e6'
xrange(1e6)だとwarningが出るので、仕方なく若干長めに。
Ruby (1.8.7)
ruby -e 'p 1000000.times.reduce{|r,i|r+rand()}/1e6'
sumはなかったけどreduceが組み込みのおかげでやたらと短い
PHP (5.2.12)
php -r 'function r1($i){return mt_rand()/mt_getrandmax();} echo array_sum(array_map("r1",range(1,1e5)))/1e5;'
見た目も残念な上に 1e6 だと 何故か動かなくて2重に残念な子でした。
Gauche (0.8.13)
gosh -usrfi-1 -E 'print (/. (fold + 0 (map (lambda(x) (/ (sys-random) RAND_MAX)) (iota 1e6))) 1e6)'
久し振りにScheme書いたよ。





Rubyだけしかよく分からないのですけど
reduce(inject)は初期値を与えないと
最初の値が初期値として使われますから
今回のような場合だと繰り返しが一回減りますので
より正確には
ruby -e 'p 1000000.times.reduce(0){|r,i|r+rand}/1e6'
とした方がいいのではないでしょうか
他の言語と同じ方針だと
ruby -e 'p (1..1e6).map{rand}.reduce(&:+)/1e6'
とか、ネタ的にすべてメソッドチェーンで書いて
ruby -e '(1..1e6).map{rand}.reduce(&:+).quo(1e6).display'
とか
mapが1M個の配列を実際に生成しちゃうので少しメモリを食いますし
1..1000000だとIntegerでイテレートされるところが、1..1e6だとFloatになるので微妙に遅いですけど
素直に手続き的に複数文で書いた
ruby -e 'r=0;1000000.times{r+=rand};p r/1e6'
の方が速いのがなんとも……