PHP如何获得与数组值不同的随机数

时间:2015-04-09 21:53:38

标签: php arrays random

实施例: 我有一个包含3个值的数组:

0 = 1
1 = 4
2 = 5

我想获得一个像

这样的随机数字
$random = rand(1, 5);

但我需要得到一个与数组值不同的数字。我需要它返回2或3。

1 个答案:

答案 0 :(得分:0)

这应该适合你:

(在这里,我创建了使用range()获取随机数的范围。然后我用array_diff()删除了你不想要的这些数字。最后你可以简单地使用array_rand()获取随机密钥/数字)

<?php

    $blacklist = [1, 4, 5];
    $range = range(1, 5);
    $randomArray = array_diff($range, $blacklist);
    echo $randomArray[array_rand($randomArray, 1)];

?>

输出:

2 or 3

修改

刚做了一些基准测试,循环方法比上面的代码慢得多!

我创建了一个1 ... 100'000的数组(黑名单)和1 ... 100'001的随机数字数组。

因此脚本应该只创建一个/唯一的随机数。使用循环方法会出现错误:

  

致命错误:超过30秒的最长执行时间

使用上面发布的代码,平均需要1.5秒。