【发布时间】:2014-11-06 02:41:24
【问题描述】:
array_rand() 有时不够好。
虽然我知道它返回的是键而不是值,但我发现它的名称不清楚。
但最重要的是,array_rand() 并没有给所有键提供相同的机会(如 Array_rand does not shuffle 或 Array_rand not random 以及许多其他示例所示)。
更好地随机化数组的一个值得注意的方法是函数shuffle(),但它可能对资源要求很高,而且如果键很重要,它们也会随之丢失。
对于那个稍微笨拙的功能,有什么更好更快的替代方法?
【问题讨论】:
-
您能否详细说明您在
array_rand()中看到的缺点?你的意思是不给平等机会? -
洗牌不需要太多要求:Fisher-Yates 只需要处理请求数量的项目,而不是整个数组。如果事实证明内置的
shuffle()“资源要求太高”,则可以针对特定任务正确实施。 -
FWIW,见 here - 从 PHP 7.1 开始,
array_rand()几乎不需要再改进了。
标签: php arrays function random