У меня есть массив со значениями и вероятностями (или в PHP, ключах и значениях): < /p>
Value Probability
John 3
Peter 2
Paul 1
< /code>
Я хочу перетасовать этот массив, но имел на заказ повлиять вероятность. То есть в среднем Джон должен появиться в верхней части списка, половина времени, Петра в треть времени, и Пол, один шестой момент времени и т. Д.* Средний порядок по сравнению с тысячами перетасовки должен быть тем, что приведено выше. < /P>
Я думал, что < /p>
Создать rate, в котором каждая значения часто указывается как указано как указано как указано как указано как указано как указано как указано по указанию на вероятность.John
John
John
Peter
Peter
Paul
< /code>
< /li>
перетасовать этот массив, например ,::
John
Paul
Peter
John
John
Peter
< /code>
< /li>
Удалить дубликаты, оставив первый экземпляр: < /p>
John
Paul
Peter
< /code>
< /li>
< /ol>
в коде PHP это может выглядеть примерно так: < /p>
$items = array(
'John' => 3,
'Peter' => 2,
'Paul' => 1
);
$probabilities = array();
foreach($items as $item => $value){
$interim = array_fill(1, $value, $item);
$probabilities = array_merge($probabilities, $interim);
}
shuffle($probabilities);
$result = array_unique($probabilities);
print("".print_r($result,true)."");
< /code>
Есть ли более быстрый способ сделать это? />Person P1 P2 P3
John 3/6 2/6 1/6
Peter 2/6 2/6 2/6
Paul 1/6 2/6 3/6
< /code>
Обратите внимание, что вероятности для второго и третьего ранга следуют из вероятности первого ранга и не указаны в исходных данных. Они только что представлены здесь для вашего удобства, потому что кто -то спрашивал о них в комментариях ниже.John 3 ← line 1
Peter 2
Paul 1
Simon 6
Robert 2
William 1
...
Sean 1 ← line 786
Подробнее здесь: https://stackoverflow.com/questions/794 ... ies-in-php
Самый быстрый способ случайного перетасовки массива на основе вероятностей в PHP? ⇐ Php
Кемеровские программисты php общаются здесь
1741594790
Anonymous
У меня есть массив со значениями и вероятностями (или в PHP, ключах и значениях): < /p>
Value Probability
John 3
Peter 2
Paul 1
< /code>
Я хочу перетасовать этот массив, но имел на заказ повлиять вероятность. То есть в среднем Джон должен появиться в верхней части списка, половина времени, Петра в треть времени, и Пол, один шестой момент времени и т. Д.* Средний порядок по сравнению с тысячами перетасовки должен быть тем, что приведено выше. < /P>
Я думал, что < /p>
Создать rate, в котором каждая значения часто указывается как указано как указано как указано как указано как указано как указано как указано по указанию на вероятность.John
John
John
Peter
Peter
Paul
< /code>
< /li>
перетасовать этот массив, например ,::
John
Paul
Peter
John
John
Peter
< /code>
< /li>
Удалить дубликаты, оставив первый экземпляр: < /p>
John
Paul
Peter
< /code>
< /li>
< /ol>
в коде PHP это может выглядеть примерно так: < /p>
$items = array(
'John' => 3,
'Peter' => 2,
'Paul' => 1
);
$probabilities = array();
foreach($items as $item => $value){
$interim = array_fill(1, $value, $item);
$probabilities = array_merge($probabilities, $interim);
}
shuffle($probabilities);
$result = array_unique($probabilities);
print("".print_r($result,true)."");
< /code>
Есть ли более быстрый способ сделать это? />Person P1 P2 P3
John 3/6 2/6 1/6
Peter 2/6 2/6 2/6
Paul 1/6 2/6 3/6
< /code>
Обратите внимание, что вероятности для второго и третьего ранга следуют из вероятности первого ранга и не указаны в исходных данных. Они только что представлены здесь для вашего удобства, потому что кто -то спрашивал о них в комментариях ниже.John 3 ← line 1
Peter 2
Paul 1
Simon 6
Robert 2
William 1
...
Sean 1 ← line 786
Подробнее здесь: [url]https://stackoverflow.com/questions/79494259/fastest-way-to-randomly-shuffle-an-array-based-on-probabilities-in-php[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия