首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用随机数列生成随机数

使用随机数列生成随机数
EN

Stack Overflow用户
提问于 2013-08-11 05:49:19
回答 1查看 92关注 0票数 0

PHP帮助

我有不同的代码系列,如下所示:

代码语言:javascript
复制
BT4YX***1
Eg:BT4DA1111
BT4YX**X1
Eg:BT4DA11A1
BT4Y**X*1
Eg:Bt4D22A21

我想使用以下命令来混洗代码的值:

代码语言:javascript
复制
X=A,B,C,D,E
*=0 to 9

因此,最终将选取一个随机序列,并将混洗值放入选定的序列中,最终将给出如下代码

代码语言:javascript
复制
BT4DA11A1

到目前为止,我做了这样的事情:

代码语言:javascript
复制
$series = array("BT4YXXXX1", "BT4Y**X*1", "BT4Y**X*1", "BT4YX**X1", "BT4YX***1");
$random_series = $series[ rand(0,(count($series)-1)) ];
echo $random_series;

我可以得到随机数列,但我坚持将X和*的随机值

请帮帮我伙计们

EN

回答 1

Stack Overflow用户

发布于 2013-08-11 06:01:22

代码语言:javascript
复制
$series = array(
        'BT4YX***1',
        'BT4YX**X1',
        'BT4Y**X*1',
        'BT4YXXXX1',
    );

$result = preg_replace_callback(
    '/[X*]/',
    function ($matches) {
        switch($matches[0]) {
            case '*' : return range(0,9)[array_rand(range(0,9))];
            case 'X' : return range('A','E')[array_rand(range('A','E'))];
        }
    },
    $series
);

var_dump($result);

编辑

需要PHP >= 5.4.0;但是如果你重构了数组解引用,你可以在5.3.0或更高版本中使用它,例如

代码语言:javascript
复制
$series = array(
        'BT4YX***1',
        'BT4YX**X1',
        'BT4Y**X*1',
        'BT4YXXXX1',
    );

$result = preg_replace_callback(
    '/[X*]/',
    function ($matches) {
        switch($matches[0]) {
            case '*' : 
                $range = range(0,9);
                $rand = array_rand($range);
                return $range[$rand];
            case 'X' :
                $range = range('A','E');
                $rand = array_rand($range);
                return $range[$rand];
        }
    },
    $series
);

var_dump($result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18166665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档