You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP:玩家列表重排后如何还原数组初始随机分配顺序?

游戏数组分配与还原问题

场景背景

在一款在线游戏的PHP开发流程中,我们会先创建一个包含A-Z、0-9共36个元素的数组,再通过随机脚本打乱数组的原有顺序,示例如下:

[0] R
[1] 4
[2] N
[3] d
...
[35] 8

随后使用PHP的chunk($arr,6)函数将打乱后的数组分块,为6名玩家各分配6个标识,示例如下:

Player 1 [0] = [R,4,n,d,O,M]
Player 2 [1] = [p,2,s,Z,k,u]
...
Player 6 [5] = [J,r,V,5,z,8]

核心问题

当玩家列表按字母顺序重新排序后,是否存在算法可以还原出最初的玩家-标识分配状态?

简化示例拆解

为了更清晰地分析问题,我们用一个简化的小示例来演示整个逻辑:

初始数组

[0] = abc
[1] = def
[2] = ghi
[3] = jkl
[4] = mno
[5] = pqr

随机置换过程

原数组的索引顺序[0,1,2,3,4,5]被随机置换为[2,5,0,3,1,4],置换后的数组结构如下:

[2] = ghi
[5] = pqr
[0] = abc
[3] = jkl
[1] = def
[4] = mno

置换后的索引与原索引的对应关系:

new order     [0]   [1]   [2]   [3]   [4]   [5] 
value         ghi   pqr   abc   jkl   def   mno
former order  [2]   [5]   [0]   [3]   [1]   [4] -> 随机置换后各位置对应的原数组索引

目标还原状态

要还原到初始的数组顺序,我们需要得到一个索引映射数组[2,4,0,3,5,1],对应的数组状态如下:

new order   [2]   [4]   [0]   [3]   [5]   [1]          
value       abc   def   ghi   jkl   mno   pqr  -> 回到初始数组的元素顺序

关键疑问

如何从随机置换得到的索引数组[2,5,0,3,1,4],推导出用于还原的目标索引数组[2,4,0,3,5,1]?


内容的提问来源于stack exchange,提问作者Wolden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:13:29