0

10%20%70%のパーセンテージで、どのアクションを実行するかを決定します。決定する方法は 2 つあります。#1 新しい Math.random() を毎回決定させるか、#2 Math.random() の結果を 1 つ保持します。コンソールで実行するコードを参照してください(rand1およびrand2メソッドに注意してください):

console.log('chart1');
var chart1;
var rand1 = function() {
    if (Math.random() <= 0.1) chart1[0]++;
    else if (Math.random() <= 0.2) chart1[1]++;
    else chart1[2]++;
};
var runs = 10000;
for (var j = 0; j < 10; j++) {
    chart1 = [0,0,0];
    for (var i = 0; i < runs; i++) rand1();
    var log = [];
    for (var k = 0; k < chart1.length; k++) {
        log[k] = Math.round(chart1[k] / runs * 100);
    }
    console.log(log);
}

console.log('chart2');
var chart2;
var rand2 = function() {
    var rand = Math.random();
    if (rand <= 0.1) chart2[0]++;
    else if (rand >= 0.1 && rand <= 0.3) chart2[1]++;
    else chart2[2]++;
};
var runs = 10000;
for (var j = 0; j < 10; j++) {
    chart2 = [0,0,0];
    for (var i = 0; i < runs; i++) rand2();
    var log = [];
    for (var k = 0; k < chart2.length; k++) {
        log[k] = Math.round(chart2[k] / runs * 100);
    }
    console.log(log);
}

それが生み出す

chart1
[10, 18, 72]
[10, 17, 72]
[11, 17, 72]
[10, 18, 72]
[10, 18, 72]
[10, 18, 72]
[10, 17, 73]
[10, 18, 72]
[10, 18, 72]
[10, 18, 71]

chart2 
[9, 20, 71]
[10, 21, 70]
[10, 19, 71]
[10, 20, 70]
[10, 19, 71]
[10, 20, 70]
[10, 20, 70]
[9, 20, 71]
[10, 20, 71]
[9, 20, 71] 

そして、なぜchart1傾向があるのか​​ わかりませんか..18, 72]

4

3 に答える 3

1

最初のグラフの 2 列目に数値が生成される確率を考えてみましょう。最初の列で終わる確率が 10% の数値を生成することから始めます。この数字が90% の確率で 1 列目にない場合、20% の確率で 2 列目に表示されます。数字が 2 番目のチャートに配置される確率の合計は、0.9 * 0.2 = 0.18 です。いくつかのランダムな変動性を追加すると、約 18 になります。

3 列目は、100 - 10 - 18 = 72 です。

2 番目の値を受け入れる確率が 2/10 ではなく 2/9 に変更された場合、合計受け入れ確率は 9/10 * 2/9 = 2/10、つまり 20% になります。 .

于 2013-04-05T15:43:39.430 に答える
-1

ええと..なぜ if 条件で Math.random() を再度呼び出すのですか????? このように使います。

var rand1 = function(){
var number = Math.random();
if(number <= 0.1) chart1[0]++;
else if(number <= 0.3) chart1[1]++;
else chart1[2]++;
};

これで、必要に応じて正しい出力が得られます

于 2013-04-05T15:45:29.437 に答える