Size: a a a

2021 January 19

w

whyamsx in javascript_ru
Тогда получится то что нужно
источник

DM

Denys Mikhalenko in javascript_ru
Ну так она и выпадает в три раза чаще чем любой из Пацанов
источник

DM

Denys Mikhalenko in javascript_ru
У которых уровень 1
источник

w

whyamsx in javascript_ru
Нужно чтобы из 4х попыток был только один пацан
источник

w

whyamsx in javascript_ru
Если идеальные условия брать
источник

G

GamiD in javascript_ru
Denys Mikhalenko
var arr = ['1:1', '4:4', '5:5', '2:2', '3:3', '20:20']

var getRandomValue = arr => {
   let total = arr.reduce((acc, x) => +x.split(':')[0]+acc, 0)
   let rnd = Math.round(Math.random() * total)
   return arr.find((x) => {
     rnd -= x.split(':')[0]
     return rnd <= 0
   })
}

var res = {}
for (let i=0; i<20; i++) {
 var r = getRandomValue(arr)
 var [key, value] = r.split(':')
 res[key] = ~~res[key]+1
}

res;
вот этот код работает правильно
источник

G

GamiD in javascript_ru
если маленькие погрешности ну это мелочи
источник

DM

Denys Mikhalenko in javascript_ru
Но он же работает так, как я написал
источник

G

GamiD in javascript_ru
наверно идеально а вот во второй попытке чуть погрешность
источник

DM

Denys Mikhalenko in javascript_ru
Двадцатка выпадает не в 20 раз больше, чем все остальные
источник

i

ik in javascript_ru
200 это еще довольно маленький сэмпл
источник

G

GamiD in javascript_ru
ik
200 это еще довольно маленький сэмпл
там может быть и 10 элементов в массиве
источник

G

GamiD in javascript_ru
но в основном будет в пределах 200
источник

i

ik in javascript_ru
ну ты ж в курсе что с вероятностью может быть как повезет?
источник

G

GamiD in javascript_ru
ik
ну ты ж в курсе что с вероятностью может быть как повезет?
да конечно
источник

DM

Denys Mikhalenko in javascript_ru
Там какая-то лажа с формулой
источник

DM

Denys Mikhalenko in javascript_ru
Там надо floor, а не round
источник

DM

Denys Mikhalenko in javascript_ru
var arr = ['1:Вася', '1:Петя', '1:Коля', '3:Маша']

var getRandomValue = arr => {
   let total = arr.reduce((acc, x) => +x.split(':')[0]+acc, 0)
   let rnd = Math.floor(Math.random() * total)+1
   return arr.find((x) => {
     rnd -= x.split(':')[0]
     return rnd <= 0
   })
}

var res = {}
for (let i=0; i<1e6; i++) {
 var r = getRandomValue(arr)
 var [key, value] = r.split(':')
 res[value] = ~~res[value]+1
}

res;
источник

DM

Denys Mikhalenko in javascript_ru
Вот так правильно работает
источник

DM

Denys Mikhalenko in javascript_ru
{Коля: 166840, Вася: 167057, Петя: 166185, Маша: 499918}
источник