![]() |
| カレッヂ |
質問者 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裏技 |