рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо



рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рджреЛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:



  1. рд╕рд░рдгреА рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
  2. рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд░рдгреА рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдкреАрдПрд▓ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд╛рд░реНрдп рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░рдорд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рд╕рд╛рде рдЖрдКрдВрдЧрд╛ред



рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рд╣рдж рддрдХ рдЫрджреНрдордХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ () рд╡рд┐рдзрд┐ 0 рд╕реЗ 1 рддрдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧреАред



рддреЛ, рдХрд╛рд░реНрдп 1



рдЖрдк рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд╕рд░рдгреА рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╕рдЪ / рдЧрд▓рдд рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рдкрддреНрд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Math.floor(Math.random() * maxNumber)



, рдЬреЛ, рд╡реИрд╕реЗ, рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред



рдирд┐рд░реНрдгрдп



рдмрд░рд╛рдмрд░ n



рдЦрдВрдбреЛрдВ рд╕реЗ 0 рд╕реЗ 1 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ random



рд╕реЗ рдирд┐рдХрдЯрддрдо рдкрд┐рдЫрд▓рд╛ рдорд╛рди рд▓реЗрдВ:





рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛


рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╛рд▓реЗ 150 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддреЗ рд╣реИрдВред рдпрд╛рдиреА 0 рд╕реЗ 150 рддрдХ рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ред

 maxNumber = 150; //      elementPart = 100 / maxNumber / 100; //     ,     0.66% randomResult = random(); cursor = 0; for (i = 0; i <= maxNumber; i++) { cursor += elementPart; if (cursor >= randomResult) { result = i; break; } }
      
      







рдЯрд╛рд╕реНрдХ реи



рд╣рдо рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ:

 items = [ {id: 1, score: 4}, {id: 2, score: 0}, {id: 3} ]
      
      





рдЬрд╣рд╛рдВ score



рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп (рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рд╣реИ рдЬреЛ рдЕрдиреНрдп рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓реНрдп рдХрд╛ "рд╡рдЬрди" рдмрджрд▓рддрд╛ рд╣реИред рдПрдХ рдореВрд▓реНрдп рдЪреБрдирдиреЗ рдпрд╛ рдПрдХ рдмрд╛рд░ рдЪрдпрдирд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЗрд╕ рдореВрд▓реНрдп рдХреА рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрдХ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдХреЛрд░рд┐рдВрдЧ рдХреЗ рдирд┐рдпрдо рдХреЗрд╡рд▓ рдХрд▓реНрдкрдирд╛ рдФрд░ рдЖрд╡реЗрджрди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред

рдЪреМрдХрд╕ рдкрд╛рдардХ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдХрд┐ 0 рдЕрдВрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдирдореВрдиреЗ рд╕реЗ рдореВрд▓реНрдп рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рдЗрд╕рд▓рд┐рдП, рдЕрдВрдХреЛрдВ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЛ 1 рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реА рдХрд░реЗрдВрдЧреЗ:

 for (i = 0; i < items.length; i++) { item = items[i]; if (item.score === 0) { item.remove(); //     continue; } if (item.score === null) { item.score = 1; //  score ,    1 } }
      
      







рдирд┐рд░реНрдгрдп



рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рд╛рд░ рдорд╛рди рдХреЗ рдЦрдВрдбреЛрдВ рдХреЛ 0 рд╕реЗ 1 рддрдХ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:





рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛


рдореВрд▓реНрдп рдХреЗ рд╡рдЬрди рдЧрдгрдирд╛ рдЬреЛрдбрд╝реЗрдВ:

 sumScores = 0; for (i = 0; i < items.length; i++) { //     sumScores += items[i].score; } for (i = 0; i < items.length; i++) { weight = items[i].score / sumScores; items[i].weight = weight; }
      
      





рдпрд╣рд╛рдВ, рд╡рдЬрди рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдХреБрд▓ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рд╢рдд рд╣реИред

рд╣рдо рд╡рдЬрди рдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддреЗ рд╣реИрдВ 1:

 sumWeights = 0 for (i = 0; i < items.length; i++) { //     sumWeights += items[i].weight; } cursor = 0; for (i = 0; i < items.length; i++) { cursor += items[i].weight / sumWeights; if (cursor >= randomResult) { suggestedItem = items[i]; break; } }
      
      







рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдЖрдИрдбреА = 1 рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИред 3. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ рдХрд┐ рд╕рдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рдПрдЧреА (рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдЕрдзреАрди) рдФрд░ рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдирдореВрдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рди рдХрд░реЗрдВ)ред

рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдХрд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдмрд╕реЗ рд╕рдорд╛рди рдХреБрдЫ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╣рдо рдХреЗрд╡рд▓ рдЖрдкрдХреА рдкрд╕рдВрдж рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдиреЛрдВ (рд╕рдорд╛рди рд░рдВрдЧ, рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░, рд╢рд╛рдпрдж рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рддрд╛) рдХреЗ рд╕реНрдХреЛрд░ рдХреА рд░рдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдХреЛрд░ рдХреЛ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдореВрд▓реНрдп рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред ред

рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд┐рд░реНрдл рдПрдХ рдЦрд░реАрджреЗ рдЬрд╛рдиреЗ рдкрд░ рджреВрд╕рд░реЗ рд╡реИрдХреНрдпреВрдо рдХреНрд▓реАрдирд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА?) рдпрд╛ рдЪрдпрди рд╕реЗ рдЦрд░реАрджреЗ рдЧрдП рд╕рд╛рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдирдпрд╛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднреЛрдЬрди рдпрд╛ рдЕрд╕реНрддрдмрд▓ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдирд╛? рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╕рд┐рдЧрд░реЗрдЯ рдХреА рд╕реБрдЧрдВрдз, рдЖрджрд┐)), рдлрд┐рд░ рдЖрдкрдХреЛ рд╡рдЬрди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 for (i = 0; i < items.length; i++) { weight = 1 - items[i].score / sumScore; if (items[i].score == sumScore) { weight = 1; } items[i].weight = weight; }
      
      





рдЬрд╣рд╛рдВ рд╡рдЬрди рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд▓рд┐рдП рдФрдВрдзрд╛ рдореВрд▓реНрдп рд╣реИред

рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЖрдЗрдЯрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдЖрдЗрдЯрдо рдХреЛ 1 рд╡рдЬрди рдХреА рдЬрд╛рдВрдЪ рдФрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред



рдЕрдм, рдЬрдм рднреА рдЗрд╕ рдореВрд▓реНрдп рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреЛрд░ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕реЗ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ (рдЪрдпрди рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗ рдмрд┐рдирд╛), рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЗрди рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЙрддреНрдкрд╛рдж рд╡рд╣ рдЖрдорддреМрд░ рдкрд░ рдЦрд░реАрджрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╣рдо рдРрд╕реЗ рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕рдиреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЦрд░реАрджреЗ рд╣реИрдВред



рдЖрдк рдпрд╣рд╛рдВ рдбреЗрдореЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╡рд┐рд╖рдп рджреНрд╡рд╛рд░рд╛



рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╣реБ-рдорд╛рдкрджрдВрдб рд╡рд┐рдХрд▓реНрдк рдФрд░ рдлрд╝рдЬрд╝реА рд╡рд┐рдХрд▓реНрдк рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВред



All Articles