在 PHP 中生成随机唯一数字数组

新手上路,请多包涵

我正在尝试从 0-n 生成一个随机数数组,然后随机播放(但要确保键和值不匹配)。

例如:

 0 => 3
1 => 2
2 => 4
3 => 0
4 => 1

请注意,键和值都在 0-4 之间,但键和值都不相同。

有什么想法吗?

原文由 Phil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答
$max = 5;
$done = false;
while(!$done){
    $numbers = range(0, $max);
    shuffle($numbers);
    $done = true;
    foreach($numbers as $key => $val){
        if($key == $val){
            $done = false;
            break;
        }
    }
}

原文由 AMayer 发布,翻译遵循 CC BY-SA 3.0 许可协议

一个更短的解决方案:

 $random_number_array = range(0, 100);
shuffle($random_number_array );
$random_number_array = array_slice($random_number_array ,0,10);

print_r($random_number_array);

结果将是:

 [0] => 53
[1] => 6
[2] => 16
[3] => 59
[4] => 8
[5] => 18
[6] => 62
[7] => 39
[8] => 22
[9] => 26

原文由 stonyau 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏