duanpi7578 2010-05-12 17:37
浏览 25
已采纳

兰特(); 排除到已经随机生成的数字..?

I have a function which calls a users associated users from a table. The function then uses the rand(); function to chose from the array 5 randomly selected userID's however!...

In the case where a user doesnt have many associated users but above the min (if below the 5 it just returns the array as it is) then it gives bad results due to repeat rand numbers...

How can overcome this or exclude a previously selected rand number from the next rand(); function call.

Here is the section of code doing the work. Bare in mind this must be highly efficient as this script is used everywhere.

$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;

Thanks in advance! Stefan

  • 写回答

2条回答 默认 最新

  • drzfz9995 2010-05-12 17:40
    关注

    The simplest way is to use 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 to know why you should use mt_rand() instead of rand().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看