小粋空間: 商品リンクをランダムに切り替える
http://www.koikikukan.com/archives/2005/11/23-23 …
上記のエントリーを参考に、amazonの商品リンクをランダムで表示させようと試してみたのですが、上記の方法だと例えば商品をA~Eまで登録していたとしても、実際ランダム表示されるのはA~Eの中から1つだけになってしまいます。
これを、個数を指定してランダム表示されるようにしたい(3と指定したとすると、A~Eの中からランダムに3つ商品を表示、のように)のですが、その際、指定数は決め打ちせず、簡単に変えられるようにしておきたいのです。
「重複しない乱数を取り出す」等検索してみましたが、不勉強のため類似質問から応用できず…
知識のある方、ご教授いただけないでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
知識はないのに回答してしみませんが、いろいろ方法はあるのではないでしょうか?
全体が配列に入っているとして、とりあえず思いつくのは・・・
1)取り出したらマークをつけておく。
乱数で呼び出すときにマークがないものが出るまで繰り返す。
2)最初に、シャッフルしておく。
配列の引数回ループでまわして、適当に入れ替えを行う。
3)取り出したものをストックしておいて、新しいものを採用する前に
それまでのものと比較して同じものがなければ採用する。
とか・・・
簡易的でよければこんなのでも、一応、ランダムになるのではないでしょうか?
全体の数と使用する数となどを考慮して効率の良い方法を決めればよいかと思います。
2)の例を以下に(リロードする度に、シャッフル後の順が変わります)
<html>
<body>
<script>
var m="最初:"; var a=[];
//最初は1~20をセット
for (var i=0; i<20; i++){a[i]=i+1; m+=" ," + a[i];}
//シャッフル
for (i=0; i<20; i++){
var n=Math.floor(Math.random() * 20);
if (i!=n) {var tmp=a[i];a[i]=a[n];a[n]=tmp;}
}
//結果を表示
m+="\n<p>混合:";
for (i=0; i<20; i++){m+=" ," + a[i];}
document.write(m);
</script>
</body>
</html>
ご回答ありがとうございます。
全く知識がなかったために、アドバイスいただいた内容もよく理解できない状態だったのですが、入門ページ等とにらめっこで何とか思い通りの挙動をさせることができました。
2)のやり方が一般的?なのかどうかわかりませんが、他の例文にも見られましたので、その方法をとることにしました。
これを機にjavascriptもがんばらなければと思います…
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
WSH(Jscript)でファイル一覧
-
undefinedを表示させない方法は...
-
JavaScriptで簡単なクイズを作...
-
引数を変数で渡す方法
-
JavaScriptにおける[] とか :...
-
jspからjavascriptの変数引継ぎ
-
【JS(Jquery)】表示切替 show...
-
JavaScriptのデータ型と配列の...
-
javascript 配列 変数名「arra...
-
配列データの利用方法
-
jsで、len~(__=C.value)]||val...
-
idを使わずにonclickで自身の要...
-
window.openでタイトル名の指定
-
<a>タグのテキストを取得
-
C#で、ContextMenuStripに動的...
-
Vb.netのグローバル変数の宣言...
-
ジェネレーターの作り方
-
functionから別のfunctionを実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
二次元配列を使って順位をだす...
-
undefinedを表示させない方法は...
-
javascript 変数名の連結をしたい
-
javascriptで行を抽出したいです。
-
javascriptで入力フォームに日...
-
JavaScriptにおける[] とか :...
-
Perlの配列をJavaScriptに渡せ...
-
HTMLで誕生石と星座をアラート...
-
フォーム入力値の重複チェック
-
WSH(Jscript)でファイル一覧
-
[JS] setAttributeで保存される...
-
オブジェクトから任意のプロパ...
-
読み込んだテキストファイルの...
-
この配列は何?
-
順列生成アルゴリズムについて...
-
textareaに入力されたデータを...
-
JavaScriptからPHPに配列を渡す...
おすすめ情報