【问题标题】:Rand(); with exclusion to and already randomly generated number..?兰德();排除和已经随机生成的数字..?
【发布时间】:2010-05-12 17:37:56
【问题描述】:

我有一个从表中调用用户关联用户的函数。然后该函数使用 rand();函数从数组中选择 5 个随机选择的用户 ID!...

在用户没有很多关联用户但高于最小值的情况下(如果低于 5,它只是按原样返回数组),那么由于重复的 rand 数字,它会给出不好的结果......

如何克服这一点或从下一个 rand() 中排除先前选择的 rand 数;函数调用。

这是完成这项工作的代码部分。请记住,这必须非常高效,因为此脚本无处不在。

$size = sizeof($users)-1;
    $nusers[0] = $users[rand(0,$size)];
    $nusers[1] = $users[rand(0,$size)];
    $nusers[2] = $users[rand(0,$size)];
    $nusers[3] = $users[rand(0,$size)];
    $nusers[4] = $users[rand(0,$size)];

    return $nusers;

提前致谢! 斯蒂芬

【问题讨论】:

    标签: php arrays random unique


    【解决方案1】:

    最简单的方法是使用array_rand()

    $users = range(3, 10); // this is just example data
    $nusers = array_rand($users, 5); // pick 5 unique KEYS from $users
    
    foreach ($nusers as $key => $value)
    {
      $nusers[$key] = $nusers[$value]; // replace keys with actual values
    }
    
    echo '<pre>';
    print_r($nusers);
    echo '</pre>';
    

    PS:Read this 知道为什么你应该使用mt_rand() 而不是rand()

    【讨论】:

    • 不知什么原因,我无法加载该链接。
    【解决方案2】:

    如果您只想打乱您的数组项,请使用shuffle

    shuffle($users);
    return $users;
    

    注意shuffle 需要通过引用传递。所以你需要传递一个变量,然后将其洗牌。

    【讨论】:

      猜你喜欢
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多