生成非重复随机数 - PHP

时间:2015-08-25 20:47:16

标签: php random

我试图在php中获取自定义函数,以便在120之间返回一个不重复的随机数,即不止一次产生相同的数字,因为我需要随后使用这个号码导航到二十个网页中的一个,我不希望显示相同的网页。

以下是我的代码分三步:

<form action="rand.php">
        <p>Click this button to display a random number that does not repeat...</p>
        <p><input type="submit" value="Generate"></p>
    </form>

以下是rand.php

require_once('functions.php');

$page = generateNumber();
echo $page;

以下是functions.php

<?php

$check = array();

function generateNumber() {

    global $check;

    $page_no = mt_rand(1,20);
    $check[] = $page_no;

    if (count($check) != 1) {

        foreach ($check as $val) {
            if ($val == $page_no) {
                $page_no = mt_rand(1,10);
                continue;
            }
        }
        return $page_no;
    }
    else {
        return $page_no;
    }
}

?>

我的代码似乎正在运行,但是,它正在重复数字,所以我显然做错了什么。我最初检查count的原因是,无论如何返回第一个数字,因为它将是一个新的数字。

为了查看号码更改,我在浏览器中刷新了rand.php页面。

2 个答案:

答案 0 :(得分:5)

我会保持简单。

// List numbers 1 to 20
$pages = range(1,20);
// Shuffle numbers
shuffle($pages);
// Get a page
$page = array_shift($pages);

答案 1 :(得分:0)

为了浏览每个页面上的所有20个数字而不重复,您需要设置会话变量。

projs