日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:52003
  • 待審:43
  • 小程序:12
  • 文章:1047590
  • 會(huì)員:762

php 中按概率控制數(shù)組元素出現(xiàn)順序打亂的方法:打亂數(shù)組順序:使用 shuffle() 函數(shù)。分配概率:使用 array_map() 為每個(gè)元素分配概率(0-1)。排序加權(quán)數(shù)組:按概率降序排序數(shù)組(概率高的元素在前)。提取元素:依次從排序后的數(shù)組中提取元素,即得按概率控制順序的打亂數(shù)組。

PHP 中使用概率控制打亂數(shù)組元素的出現(xiàn)順序

打亂數(shù)組的元素順序是諸多開發(fā)場(chǎng)景中常見的需求,例如,隨機(jī)抽獎(jiǎng)、游戲機(jī)制等。如果需要在打亂數(shù)組后按概率控制元素的出現(xiàn)順序,PHP 提供了恰當(dāng)?shù)暮瘮?shù)和方法。

準(zhǔn)備工作

首先,準(zhǔn)備一個(gè)包含要打亂元素的數(shù)組。例如:

$array = [1, 2, 3, 4, 5];

登錄后復(fù)制

使用 shuffle() 函數(shù)打亂數(shù)組

shuffle() 函數(shù)可以打亂數(shù)組中元素的順序。

shuffle($array);

登錄后復(fù)制

使用概率控制元素出現(xiàn)的順序

使用 array_map() 方法遍歷數(shù)組元素,為每個(gè)元素分配一個(gè)概率。概率值介于 0 到 1 之間,其中 0 表示該元素永遠(yuǎn)不會(huì)出現(xiàn),1 表示該元素始終出現(xiàn)。

$probabilities = [0.2, 0.3, 0.4, 0.5, 0.6];
$weightedArray = array_map(function ($element, $probability) {
    return [$element, $probability];
}, $array, $probabilities);

登錄后復(fù)制

排序加權(quán)數(shù)組

對(duì)加權(quán)數(shù)組進(jìn)行排序,概率較高的元素將處于數(shù)組開頭。

usort($weightedArray, function ($a, $b) {
    return $b[1] <=> $a[1];
});

登錄后復(fù)制

提取元素

現(xiàn)在,從排序后的加權(quán)數(shù)組中依次提取元素,即可獲得按概率控制順序的打亂數(shù)組。

$reorderedArray = [];
foreach ($weightedArray as $element) {
    $reorderedArray[] = $element[0];
}

登錄后復(fù)制

實(shí)戰(zhàn)案例

假設(shè)有一個(gè)游戲,需要從一個(gè)包含 5 個(gè)物品的數(shù)組中隨機(jī)抽取 3 個(gè)物品。每個(gè)物品出現(xiàn)的概率分別為:

物品 1:20%物品 2:30%物品 3:40%物品 4:50%物品 5:60%

可以按上述步驟實(shí)現(xiàn)如下代碼:

$items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5'];
$probabilities = [0.2, 0.3, 0.4, 0.5, 0.6];

shuffle($items);
$weightedItems = array_map(function ($item, $probability) {
    return [$item, $probability];
}, $items, $probabilities);

usort($weightedItems, function ($a, $b) {
    return $b[1] <=> $a[1];
});

$drawnItems = [];
for ($i = 0; $i < 3; $i++) {
    $drawnItems[] = $weightedItems[$i][0];
}

print_r($drawnItems);

登錄后復(fù)制

運(yùn)行以上代碼,將輸出按概率控制順序抽取的 3 個(gè)物品。

分享到:
標(biāo)簽:元素 打亂 數(shù)組 概率 順序
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 52003

    網(wǎng)站

  • 12

    小程序

  • 1047590

    文章

  • 762

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定