Math.random () Javascript - процент и вес - PullRequest
0 голосов
/ 02 марта 2020

У меня есть проблема, когда мне нужен процент записанных звонков, система не позволяет просто установить это. Поэтому в моем коде мне нужно вычислить его, а затем сказать, что 20% не записывают.

Кто-то предложил использовать для этого функцию Math.Random (), и она должна сбалансироваться, но я не могу понять, как генерация случайных чисел.

так:

var desiredrecordpercentage = 80

var percentageCheck = Math.random()*100;
if (percentageCheck >= desiredrecordpercentage){

    disable recording;

}

Я просто не вижу, как это число будет сбалансировано на 100 вызовов, может ли оно генерировать один и тот же номер дважды за 100 вызовов? Или он работает через 100, потом запускается заново?

1 Ответ

2 голосов
/ 02 марта 2020

Всякий раз, когда мне нужно, чтобы что-то произошло на основе фиксированной вероятности, я обычно имею дело с точкой с плавающей точкой между 0 и 1, аналогично Math.random() выводит случайное значение.

Я получаю повторно Вы написали свою программу для учета вероятностей, но, если хотите, нет ничего плохого в работе с процентами. Я просто думаю, что умножение на 100 не очень полезно, и это не делает программу более читабельной (по крайней мере, для меня).

Есть одно отличное видео, которое я долго смотрел, go, которое описывает это сама концепция.

Основы вероятности - природа кода Автор: Дэниел Шиффман (YouTube)

var desiredRecord = 0.8;   // 1: record everything, 
                           // 0: record nothing

var check = Math.random();  // check will be anywhere between 0 and 1

if (check > desiredRecord) { // will be true if check is between 0.81 and 0.99
                             // but false if check is below 0.8 
                             // which is more probable since 80 is the
                             // majority or the percentile

    disable_recording();

}

Приведенный выше код будет работать и большую часть времени, disable_recording() не вызывается, так как, скорее всего, функция random() выведет значения меньше 0,8. Но иногда (в 20% случаев) функция вызывается.

...