Я ищу исправление с помощью формулы, которую я создаю на javascript

#javascript #html #css

#javascript #HTML #css

Вопрос:

В принципе, у меня есть веб-сайт, который я создаю, это побочный продукт универсальных скрепок, он называется rubberbands . В процессе, конечно, вам нужно найти приличную формулу для расчета роста общественного интереса с количеством людей, которые покупают ваши резиновые ленты. Так что, чем выше общественный интерес, тем больше людей покупают ваши резиновые ленты.

У меня есть формула, которую я использую, но она очень субъективна и несовершенна, плюс она не работает, если ваши общественные интересы превышают 800 процентов. Ниже приведена формула, которую я использовал с интервалом в 100 мс.

  setInterval (function() {
       if (publicinterest < 100) {
         if (Math.random() < publicinterest / 200) {
           if (Math.random() < publicinterest / 200) {
             if (unsoldrubberbands > 0) {
               money  = sellingprice; 
               publicinterest = publicinterestdecider / 
sellingprice;  
                 unsoldrubberbands -= 1; 
                 document.getElementById('moneytext').innerHTML = 
'Money: $'   money.toFixed(2); 
               document.getElementById('inventory').innerHTML = 
'Inventory: '   unsoldrubberbands;
               document.getElementById('publicinterest').innerHTML = 
"Public Interest "   publicinterest.toFixed(1)   '%';
           }
         }
       }
     }
   if (publicinterest < 200) {
       if (Math.random() * 2 < publicinterest / 190) {
         if (Math.random() * 2 < publicinterest / 190) {
           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }

   if (publicinterest < 300) {
       if (Math.random() * 3 < publicinterest / 180) {
         if (Math.random() * 3 < publicinterest / 180) {
           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }

   if (publicinterest < 400) {
       if (Math.random() * 4 < publicinterest / 170) {
         if (Math.random() * 4 < publicinterest / 170) {
           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }

   if (publicinterest < 500) {
       if (Math.random() * 5 < publicinterest / 160) {
         if (Math.random() * 5 < publicinterest / 160) {
           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }

   if (publicinterest < 600) {
       if (Math.random() * 6 < publicinterest / 150) {
         if (Math.random() * 6 < publicinterest / 150) {
           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }

   if (publicinterest < 700) {
       if (Math.random() * 7 < publicinterest / 140) {
         if (Math.random() * 7 < publicinterest / 140) {
           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }

   if (publicinterest < 800) {
       if (Math.random() * 8 < publicinterest / 130) {
         if (Math.random() * 8 < publicinterest / 130) {

           if (unsoldrubberbands > 0) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'     money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
         }
       }
     }
   }
     //console.log('sellingpriceint', sellingprice);
     //console.log('publicinterestint', publicinterest);
     //console.log('rubberbandsint', rubberbands)


 },100)
  

Этот код описывает 4 переменные. Общественный интерес — это событие, которое призвано увеличить объем продаж в зависимости от того, насколько он высок. Цена продажи — это сумма денег, за которую вы продаете резиновые ленты, и, следовательно, чем ниже, тем выше общественный интерес. publicinterestdecider — это, по сути, маржа и то, как я мог бы повысить общественный интерес с помощью обновлений. А unsoldrubberbands — это просто инвентарь. Деньги довольно самооправдывающиеся. Так что на самом деле все, что я ищу, — это лучшая формула, которая будет работать экспоненциально в зависимости от общественных интересов и работает независимо от того, каковы общественные интересы. (Имейте в виду, что общественный интерес сам по себе — это просто число, но на дисплее я добавляю символ процента рядом с ним)

Комментарии:

1. Если вы действительно серьезно относитесь к получению ответа на этот вопрос, я бы рекомендовал значительно упростить его и, вероятно, обобщить алгоритм, который вы пытаетесь описать, в псевдокод, а затем повторно отправить вопрос.

Ответ №1:

Вот способ сделать большую часть вашего кода пригодной для повторного использования:

 setInterval (function() {
    if (publicinterest < 100) {
        if (Math.random() < publicinterest / 200) {
            if (Math.random() < publicinterest / 200) {
                if (unsoldrubberbands > 0) {
                    money  = sellingprice; 
                    publicinterest = publicinterestdecider / sellingprice;  
                    unsoldrubberbands -= 1; 
                    document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
                    document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
                    document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
                }
            }
        }
    }

    for(var loop = 0; loop < 7; loop  ){
        if(
            publicinterest < loop * 100   200
            amp;amp;
            Math.random()   (loop   2) < publicinterest / (190 - 10 * loop)
            amp;amp;
            Math.random()   (loop   2) < publicinterest / (190 - 10 * loop)
            amp;amp;
            unsoldrubberbands > 0
        ) {
             money  = sellingprice; 
             publicinterest = publicinterestdecider / sellingprice;
             unsoldrubberbands -= 1; 
             document.getElementById('moneytext').innerHTML = 'Money: $'   money.toFixed(2); 
             document.getElementById('inventory').innerHTML = 'Inventory: '   unsoldrubberbands;
             document.getElementById('publicinterest').innerHTML = "Public Interest "   publicinterest.toFixed(1)   '%';
        }
    }

},100)
  

Я не уверен, что вы хотите запускать код 7 раз для каждого интервала, но если это так, это сделает это.