我試圖從數組內的元素池中獲得一個優勝元素。有不太ocurrences元素是贏家:PHP - 按值升序然後按值隨機
$answer_list = [7,7,7,5,4,1,2,2,3,1,3,7,7,4,1,4,5,5,4,5];
$answer_list_counts = array_count_values($answer_list);
asort($answer_list_counts);
array(6) {
[2]=> 2
[3]=> 2
[1]=> 3
[4]=> 4
[5]=> 4
[7]=> 5
}
排序後,獲勝的元素將是$ answer_list_counts [0]大部分的時間。
但是,如果有多個元素共享相同數量的出價,那麼具有最低密鑰的元素將始終獲勝。理想情況下,這應該是隨機的。
所以在這種情況下,獲勝者的關鍵是2
或3
,但此時鍵2
總是贏。第二個「隨機」排序,尊重最初的排序會解決這個問題,但我無法讓它工作。
我嘗試使用ASORT後洗牌:
$winner = shuffle($answer_list_counts)[0];
但這種方法不尊重第一個排序,它只是慢騰騰整個陣列隨機。
你能張貼不代碼工作? – martin
加入了全部代碼 – Mazka