Задать вопрос
  • Авторизация на ВКонтакте php скриптом

    fsdsdfsfdsfsdfsdfsdfsdfsd
    @fsdsdfsfdsfsdfsdfsdfsdfsd
    Unknown
    Закодил актуальную версию авторизации ВК — pastebin.com/5YecKuUs
    Ответ написан
    3 комментария
  • Как вызывать случайную функцию с заданной вероятностью?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function randomCall(items) {
      const max = items.reduce((acc, n) => acc + n.ratio, 0);
    
      return function(...args) {
        const val = Math.random() * max;
        for (let sum = 0, i = 0; i < items.length; i++) {
          sum += items[i].ratio;
          if (sum > val) {
            return items[i].func.apply(this, args);
          }
        }
      };
    }
    
    
    const func = randomCall([
      { func: func1, ratio: 1 },
      { func: func2, ratio: 2 },
      { func: func3, ratio: 3 },
      { func: func4, ratio: 4 },
    ]);

    https://jsfiddle.net/pgnL6at1/
    Ответ написан
    Комментировать
  • Как вызывать случайную функцию с заданной вероятностью?

    profesor08
    @profesor08 Куратор тега JavaScript
    // функция, которая вернет функцию, которая будет на основе указанных вероятностей вызывать одну из указанных функций
    const randomFuncBuilder = items => {
      const total = items.reduce((sum, item) => sum + item.rate, 0);
      
      return () => {
        const rand = Math.random() * total;
        let sum = 0;
        
        for(const {func, rate} of items) {
          sum += rate; 
          
          if (sum >= rand) {
            return func();
          }
        }
      };
    };
    
    // список функций и некоторого абстрактного значения частоты вызова
    // в данном случае диапазон не 0-100, а 0-150.
    const funcArray = [
      {
        func: () => 1,
        rate: 10
      },
      {
        func: () => 2,
        rate: 20
      },
      {
        func: () => 3,
        rate: 30
      },
      {
        func: () => 4,
        rate: 40
      },
      {
        func: () => 5,
        rate: 50
      }
    ];
    
    // сама готовая функция, которую надо вызывать
    const randomFunc = randomFuncBuilder(funcArray);
    
    // результаты будут тут
    let res = [];
    
    for(let i = 0; i < 100000; i++) {
      res.push(randomFunc());
    }
    
    // подсчет результатов, соответствует числу вызовов функций
    const count = res.reduce((acc, v) => {
      acc[v] += 1;
      return acc;
    }, {
      "1": 0,
      "2": 0,
      "3": 0,
      "4": 0,
      "5": 0,
    });
    
    // проверка результатов, считать вероятности умеет же? значит вопросов не возникнет.
    const total = funcArray.reduce((sum, item) => sum + item.rate, 0);
    
    console.log(count);
    
    console.log({
      "1": count[1] / 100000 * total,
      "2": count[2] / 100000 * total,
      "3": count[3] / 100000 * total,
      "4": count[4] / 100000 * total,
      "5": count[5] / 100000 * total,
    });
    Ответ написан
    Комментировать
  • Частота использования функции javascript?

    Stalker_RED
    @Stalker_RED
    if (value == 10){
            _func2();
        } else if (value == 1){
          _func1();
        } else if (value > 1 && value < 6) { // 2-5
          if(Math.random < 0.7) { // 70% chance
            _func1();
          } else {
            _func2();
          }
        } else if (value > 5 && value < 10) { // 6-10
          if(Math.random < 0.7) { // 70% chance
            _func2();
          } else {
            _func1();
          }
        }


    но возможно лучше подошло бы плавное изменение шансов в зависимости от положение ползунка.
    Math.random() * 10 + value или типа того
    Ответ написан
    Комментировать