Самый быстрый способ случайного перетасовки массива на основе вероятностей в PHP? [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Самый быстрый способ случайного перетасовки массива на основе вероятностей в PHP? [закрыто]

Сообщение 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


Подробнее здесь: https://stackoverflow.com/questions/794 ... ies-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»