editing README.md
This commit is contained in:
parent
043f5eb70d
commit
f4cb5f4033
28
README.md
28
README.md
@ -84,6 +84,34 @@ const pseudoCumulativeWeights = [
|
||||
|
||||
Элемент `1`: ≈ 9%
|
||||
|
||||
В общем случае функция выглядит примерно так:
|
||||
```javascript
|
||||
|
||||
function weightedRandom(items, weights) {
|
||||
if (items.length !== weights.length) {
|
||||
throw new Error('Массивы элементов и весов должны быть одинакового размера');
|
||||
}
|
||||
|
||||
if (!items.length) {
|
||||
throw new Error('Элементы массива не должны быть пустыми');
|
||||
}
|
||||
const cumulativeWeights = [];
|
||||
for (let i = 0; i < weights.length; i += 1) {
|
||||
cumulativeWeights[i] = weights[i] + (cumulativeWeights[i - 1] || 0);
|
||||
}
|
||||
|
||||
const maxCumulativeWeight = cumulativeWeights[cumulativeWeights.length - 1];
|
||||
|
||||
const randomNumber = maxCumulativeWeight * Math.random();
|
||||
|
||||
for (let itemIndex = 0; itemIndex < items.length; itemIndex += 1) {
|
||||
if (cumulativeWeights[itemIndex] >= randomNumber) {
|
||||
return items[itemIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Как можно еще лучше алгоритм генерации слов?
|
||||
|
||||
Данный скрипт является больше примером использования алгоритма выбора случайного элемента массива на основе их веса, поэтому я не
|
||||
|
Loading…
Reference in New Issue
Block a user