09/10/12 19:18:20
>>737が正解
739:デフォルトの名無しさん
09/10/12 19:21:25
俺俺ライブラリに
class Range
def rand
Kernel.rand(last-first+1)+first
end
end
ってやっといて
(10..20).rand
するとか
標準じゃ無理
740:デフォルトの名無しさん
09/10/12 19:29:25
(10..20).to_a.sort_by{rand}.first
741:デフォルトの名無しさん
09/10/12 19:39:58
>>740短いのですがどうもちゃんと動作しないようです。
(1..2**30).to_a.sort_by{rand}.first
としましたが、結果がかえってこないのであきらめました。
742:デフォルトの名無しさん
09/10/12 20:07:39
>>741
そりゃ単に重すぎるだけだ
要素数が2**30の配列を作ってるんだから
そこまで大きな数を扱うのなら、小手先なしでrandした方がいいよ
743:デフォルトの名無しさん
09/10/12 20:08:59
だから>>737以外は実用妥当な乱数にならねえって
744:デフォルトの名無しさん
09/10/12 20:09:56
スレタイ100回読んで半年ROMっとけ
745:デフォルトの名無しさん
09/10/12 20:15:49
乱数発生部は組み込みに任すのが完全に正しい姿だな
累乗とか使って結果的に偏らせるのも成長段階には必要という説もあるが
746:デフォルトの名無しさん
09/10/12 20:17:49
最近/.並にゴミで埋まるようになってきたなここ。
747:デフォルトの名無しさん
09/10/12 20:23:23
>>746
2chも大差ないだろ
748:デフォルトの名無しさん
09/10/12 20:24:39
>>746
斬新な自己紹介ですね
749:デフォルトの名無しさん
09/10/12 20:40:35
こういうありきたりなループの終了条件に
!=を使うのは普通ですか?
count = 1
end_count = 10
while count != end_count
puts count
count = count + 1
end
750:デフォルトの名無しさん
09/10/12 20:44:09
へん
751:デフォルトの名無しさん
09/10/12 20:48:03
(1...10).each {|i| puts i}
じゃだめなん?
752:デフォルトの名無しさん
09/10/12 20:50:22
count が増えるとは限らないのだろ
loop do
break if count == end_count
...
end
せめて break して欲しい
753:デフォルトの名無しさん
09/10/12 21:08:18
>>752
何でbreakの方を推すの? 横から見てもいまいちわからん
普通ここは、読みやすいuntilを推す流れじゃないかと思うんだけど
754:デフォルトの名無しさん
09/10/12 21:15:49
あまり使わないんですね。
気をつけます。ありがとうございます。
755:デフォルトの名無しさん
09/10/12 21:18:26
あまり使わないのか?
場合によりけりで特に使う使わないを気にする記述でもないと思うんだけど
756:デフォルトの名無しさん
09/10/12 21:21:14
>>740
単に非効率なやり方だろ
他人に教えるようなものじゃない
757:デフォルトの名無しさん
09/10/12 22:29:55
C++のSTLのイテレータに慣れてるとそう書きたくなるな。
758:デフォルトの名無しさん
09/10/12 22:33:38
読みやすい until などというものは存在しない
と思う