生成随机数而不会出现重复问题

时间:2014-07-02 17:55:13

标签: php arrays random numbers shuffle

我知道关于生成随机数的问题有很多答案,但我在将它与我的网站集成时遇到了问题。

我使用RANGE生成一个随机数,然后SHUFFLE。但我仍然在重复数字。

目标:生成0-19之间的数字。数字则对应于正在显示的特定图形。

我的代码:

$numbers = range(0, 19);
  shuffle($numbers);

  print "<div id='commenter-picture'>";
  print "<img src='member_default_" . print_r($numbers[0]) . ".png' />";
  print "</div>";

更新:当用户匿名时,我在我的博客上使用此评论。所以我首先检查用户是否登录,如果不是,那么我有这个语句将缩略图分配给博客帖子上的那个评论。我没有在我的代码中重复多次,而是每次有新注释时Drupal CMS都会检索此代码。

当我在帖子上列出10条评论时,我会重复缩略图。这就是我希望消除的。

1 个答案:

答案 0 :(得分:1)

取决于“重复数字”的含义。你在同一页面上多次这样做?尝试每次使用array_pop()array_shift()

从数组中删除
$numbers = range(0, 19);
shuffle($numbers);

print "<div id='commenter-picture'>";
print "<img src='member_default_" . echo array_pop($numbers) . ".png' />";
print "</div>";

print "<div id='commenter-picture'>";
print "<img src='member_default_" . echo array_pop($numbers) . ".png' />";
print "</div>";

// etc...

您可能想循环:

$numbers = range(0, 19);
shuffle($numbers);

while($num = array_pop($numbers)) {
    print "<div id='commenter-picture'>";
    print "<img src='member_default_" . $num . ".png' />";
    print "</div>";
}