- ベストアンサー
確率?
急ぎです ページ開いたときに確率によって出る画像なんかを変える(何%で画像A、残り何%で画像Bが出るみたいな感じ)ことができるって聞いたことあるんですけど、やり方知ってる方が居ましたら教えてください。 自分でも調べてみたのですが良くわかんないってゆうか見つからないとゆうか・・・・ お願いします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
2つだとできたんですよね? 4つではどんな風にできないんでしょう? 具体的に教えてください。 ・4つの画像がどうしても出てこないのか ・4つにしようとするとエラーが発生するのか など。 $image_noにどんな数字が入っているかを printで表示させてみるなどして、 どこまでが正しくできているかを見極めていけば どこが間違いの部分かがわかると思いますよ。
その他の回答 (4)
- callhiro
- ベストアンサー率35% (54/152)
あれ?CGIも試されたんですか? 2つだとうまくいって4つだとうまくいかないのは 単なるミスだと思いますがどのように書かれてますか? エラーが出るのでしょうか? それとも4枚出るはずが3枚しか出ないとかでしょうか? imageA:10%(数字の0) imageB:30%(数字の123) imageC:40%(数字の4567) imageD:20%(数字の89) と言う風に決めておくと $image_no = int(rand(10)); if($image_no < 1){ $image = imageA.jpg; }elsif($image_no < 4){ $image = imageB.jpg; }elsif($image_no < 8){ $image = imageC.jpg; }else{ $image = imageD.jpg; } print "<img src=$image>\n"; と書けばよいかと思います。 もしこれでもうまくいかなかったら、 $image_no = int(rand(10)); の上に srand; と書いてみて下さい。 そうすると乱数を初期化します。
- callhiro
- ベストアンサー率35% (54/152)
そういえばこれぐらいJavaScriptでも出来ますよね。 CGIならある程度知識があるのですが、JavaScriptはほとんど使ったこと無いので CGIならわかると思って以下のように質問してしまいました。 でも基本的にはJavaScriptの方法と同じですよ。 違いは、JavaScriptの場合は、最初にすべての画像を読み込んでしまうはずなので、 ランダムに表示させたい画像が多くなった場合あまりお薦めできません。 CGIの場合は、表示させる画像しか読み込まないです。 20%で画像A、80%で画像Bが出るみたいな感じにするとしたら $image_no = int(rand(10)); # $image_no に0~9の数字が入ります。ここでは必ずしも整数化する必要はありません。 if($image_no < 2){ $image = imageA.jpg; }else{ $image = imageB.jpg; } print "<img src=$image>\n"; っていう感じですかね。 僕が実際に自分のホームページでやってるのは、 300枚ぐらいの画像を等確率でランダムに表示させてますので、 配列「@imagefiles」にファイルから読みとった300枚の画像のファイル名(パス)を入れた後に、 $image_no = int(rand($#imagefiles+1)); print "<img src=$imagefiles[$image_no]>\n"; のように使ってます。 この場合は配列の引数にそのまま使ってますので整数化する必要があります。
補足
ありがとうございます やってみたのですがうまくいきませんでした k-ishidateさんのもそうだったのですが、画像が2つだとうまくいくんです でも、僕が今やりたいのは4つ(始めから言っとけとかいうツッコミはなしで)なんですが、4つになるとできなくなるんですよ どうなんですかね できればくわしく教えていただけないでしょうか
JavaScriptではどうでしょう。HTMLに埋め込むので、 サーバで自作CGIが使えなくても可能です。 私は以下のコードで確認をしてみました。とりあえずダミーの画像リンクを 置いて、その後JavaScriptで乱数を発生させ、約1/2の確率で 瞬時に画像の置き換えをしています。 <HTML> <BODY> <IMG SRC="dummy.jpg" NAME="img" > <SCRIPT LANG="JavaScript"> <!-- i = Math.random(); if ( i > 0.5){ document.img.src = "Dscf0031.jpg"; } else { document.img.src = "Dscf0032.jpg"; } // --> </SCRIPT> </BODY> </HTML> 画像の変更は、参考URLを見てみて下さい。乱数については、 検索サイトで「JavaScript」「乱数」で検索してみてください。
お礼
ありがとうございます これでもよさそうなのですがなんかちがうきがするんです どうなんでしょうか(謎 とにかくありがとうございました 一度試しにやってみます
- callhiro
- ベストアンサー率35% (54/152)
あくまでHTMLでやりたいという話ですか? CGIを使えば簡単に出来ますが・・・。
補足
はい、出きるのであればHTMLがいいです。 でも、そのCGIのやり方も教えていただけるのなら教えてほしいです
補足
何度もありがとうございます やってみたのですができませんでした 思ったのですが出来ないのはたぶん(とゆうか確実に)僕のCGIに対する知識の無さのせいだと思うんですよ それか認識の間違いか それでそうゆうのを探してみたんですがさっぱりでした どうしましょう