のいずれかになりますの上に、2よりも小さくなります上記の私のコメントを適切な答えに変えてください。その答えの短いバージョンははいです。可能な結果は2つ以上あります。
長いバージョン
あなたの機能pick_exp
は正しくそれが入力配列の要素を選択するように実装されます。問題は、それを複数回呼び出すことで、配列の要素が結果に均等に表現されることを期待していることです。
最初の条件では、pick_exp
を初めて呼び出します。その結果は 'a'または 'v'となる可能性があり、結果は真または偽であり、それぞれの場合に50%の確率で表示されます。それが偽であった場合は、それを再度呼び出すと、の新しいの値が選択されます。これは等しい確率で独立した 'a'または 'v'、または最後に呼び出したときの結果です。 2番目の式がfalseになる確率は%です。つまり、リダイレクトが発生していない関数から戻ることを意味します。実際にリダイレクトする機会は、全体で約50%です。
固定コードは次のようになります。
function() {
var rand_exp = ['v', 'a'];
var pick_exp = function (expType) {
expType[Math.floor(Math.random()*expType.length)];
};
var result = pick_exp(rand_exp);
if (result === 'v') {
window.location.replace("experiment_v.html");
} else if (result === 'a') {
window.location.replace("experiment_a.html");
}
}
をあなたが機能せずにそれを行うと、このような何かを得ることができます:
function() {
var rand_exp = ['v', 'a'];
var pick_exp = rand_exp[Math.floor(Math.random()*rand_exp.length)];
if (pick_exp === 'v') {
window.location.replace("experiment_v.html");
} else if (pick_exp === 'a') {
window.location.replace("experiment_a.html");
}
}
ちょうど二つの可能なパスで上記のコードの結果:'v' -> experiment_v.html
およびa -> experiment_a.html
。
また、あなたは結果を直接使用することができます。
function() {
var rand_exp = ['v', 'a'];
window.location.replace("experiment_" + rand_exp[Math.floor(Math.random()*rand_exp.length)] + ".html");
}
あなたは2つだけの選択肢を得るbeauseあなたは、pick'(あればそうでない} 'かの秒を省略することができます –