Math.Random () выбирает еще несколько при выборе элементов массива - PullRequest
0 голосов
/ 08 октября 2019

Я хочу выбрать один из имеющихся у меня предметов в соответствии с возможностями (в соответствии с квадратом p).

Для этого;

for (let sec_index = 0; sec_index < 1000;) { //i want select 1000 pcs
    var random_item_num = Math.floor(Math.random() * posts_array.length); //select random item and return index number
    var random_item = posts_array[random_item_num]; //return random item key.
    var random_item_real_prob = prob_map[random_item]; //return random item's p ,  0.56489321 etc... '.
    var random_item_prob = Math.pow(random_item_real_prob, 2) * s_loc; //s_loc is a coefficient
    var random_sayi = Math.random(); //new random number
    if (random_sayi<random_item_prob) {
        selection_array[sec_index] = random_item; // return [[1: id][2:id]......]
        selection_count[random_item_prob]++; //return [[p : 1] [other p : 10] ......]
        sec_index++;
    }
}

Эти коды все еще работают.

НО; p, счетчик выбора в 1000

p , selection count in 1000

Как вы увидите здесь, выбор слишком велик длянекоторые возможности. Это повторяется каждый раз. Хотя их позиции в массиве постоянно меняются, результат один и тот же.

Это математическая проблема?

Спасибо!

...