カレッヂ |
質問者 c10
投稿日 9/5(木) 01:23:53
1から10までの数の中で異なる3つの乱数を表示したいのですが、どうにもうまくいきません。 自分では次のような構文しか浮かんでこないのですが、それも中途半端です。 何方かアドバイスして頂けないでしょうか? $r1= int(rand(10)+1); $r2= int(rand(10)+1); $r3= int(rand(10)+1); if ($r1 eq $2) { ?????????????????; } elsif ($r1 eq $r3) { ????????????????; } elsif ($r2 eq $r3) { ????????????????; } else { print $r1; print $r2; print $r3; }
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 9/5(木) 12:04:20
私は配列からランダムに抜き取る方法を使っています。 @tmp = (1..10); while ($#out < 2) { push (@out, splice(@tmp, int(rand($#tmp)), 1)); } で、$out[0]・$out[1]・$out[2]に異なる数字が入ります。 |
質問者 c10
[削除]
投稿日 9/7(土) 00:49:18
レスして頂きたいへんありがとうございました。 申し訳ありませんが、もうひとつ教えていただきたいのですが宜しいでしょうか。 乱数の範囲を当初の1〜10ではなく任意の範囲(例えば1〜4)に設定しようと 教えていただいた内容を次のように変更したのですが、駄目(処理中のまま)です。 お手数ですが、またアドバイスして頂けるとさいわいです。 「@tmp = (1..10);」→「@tmp = (1..4);」 |
回答者 しあわせのツボ
[削除]
投稿日 9/7(土) 02:27:54
確認しますが、1..10なら動きますか? この処理は、自作スクリプトで「データベース検索をして結果を@tmpに格納し、 ヒットが多ければランダムに抜粋して表示する」処理をしている部分をコピーし、 ご質問に合わせて一部改変したものです。 検索結果数は予測不能なので、@tmpの要素数には影響されないよう 書いたつもりなのですが…。 と言うか、4通りのうち3つなら、逆に外す1つをrandで抜いて 他の3つを表示する方が楽かもしれませんよ。 |
質問者 c10
[削除]
投稿日 9/13(金) 00:26:12
すみません。 私のスクリプトからはずし、教えて頂いたスクリプトで試したら(1..4)でも動きました。 私のスクリプトに問題があるようです。 (まだ解決してませんが...自力でがんばります。) いろいろ本当にありがとうございました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |