JavaScriptでランダムかつそれぞれの値に表示される確率を設定して値を複数取得できる手段を教えて頂きたいです。
<input type="text" id="category1" value="あいうえお"> <input type="text" id="category2" value="かきくけこ"> <input type="text" id="category3" value="さしすせそ"> <input type="text" id="category4" value="なにぬねの"> <input type="text" id="category5" value="はひふへほ"> <input type="text" id="category6" value="まみむめも"> <input type="text" id="category7" value="やゆよ"> <input type="text" id="category8" value="らりるれろ"> <input type="text" id="category9" value="わをん">
例えば、イメージとして上記に入力された9つの値の中からランダムで2つ取得するときに、取得される確率をcategory1,category2を70%、category3,category4を50%、category5を30%、それ以外は20%と設定し、ランダムで優先順位をもちながら2つ値を取得といった感じです。
これをJSで実装したいです。
よろしくお願いします
ご提示の確率は合計100%超えていると思うのですが、何に対しての確率でしょうか。また、優先順位とはどのように定義されていますか?
確かにご指摘のとおり、何に対する確率かの明記が不十分でした。イメージとしてはcategory1~9を順番に見て行って、表示するかしないかを選択するとき70%の確率で表示し、30%の確率で表示しない、これをcategory3では表示する確率50%、しない確率50%といったように最後までみていくイメージでした。これが上記での確率のイメージで、優先順位とは確率の高い先述の確率が高いほど二つ取得されるうちの1つに入るというイメージです。しかしそもそも表題の処理を実装したいときにもっといい手段がないとも言えない気がするので、ほかの方法でアイデアがあった場合も頂きたいです。宜しくお願いします。
つまりそれぞれのカテゴリは他に影響されず、自らの指定された確率で表示をしたりしなかったりするのですね?場合によっては表示が1個もなかったり、9個全部が表示されてもよいということで?
上記の例で行くと、9個のうち2個をランダムで取ってくるイメージです。その出力される2個を選ぶのにさらに優先順位をつけたいといった感じです。
その優先順位は絶対なのでしょうか?1〜9まで全部ヒットしてしまって9個当たりが出たとしても、表示するのは「必ず」優先順位で上から1と2のものだけですか?
低い確率ですが0個あるいは1個しか選択されないことがありうると思いますが、その時は不足のままでいいですか?
優先順位に関しては絶対表示するのではなく、あくまで表示される確率が高くなるという意味での優先順位を想定しています。
もし仮に0~1個になった場合でも大丈夫です。
>あくまで表示される確率が高くなる それならば優先順位にも確率を付けていただかないと仕様が足りないかと思います。
「9つの値の中からランダムで2つ取得する」とありますが、要件をまとめると「ランダムで0~9個表示する」になっていて矛盾があるように思われます。
仕様の伝え方が曖昧だった点申し訳ありませんでした。。。こちらの件ひとまずベストアンサーに選ばせて頂いたもので解決しました。
回答3件
あなたの回答
tips
プレビュー