变量中的随机数,无需重复

时间:2019-01-14 12:37:45

标签: php

我正在尝试这个小代码,但是在'$ person1'和'$ person2'中显示了相同的随机数。

是否可以在每次调用变量'$ randomNumbers'时显示不同的随机数?

$randomNumbers = rand(0,10);

$person1= [
    'note' => [$randomNumbers]
];

$person2= [
    'note' => [$randomNumbers]
];

$data=[$person1,$person2];

2 个答案:

答案 0 :(得分:2)

在分配它之前生成另一个随机数。这不能确保两个数字总是不同的!

$randomNumber = rand(0,10);

$person1= [
    'note' => [$randomNumber]
];

$randomNumber = rand(0,10);

$person2= [
    'note' => [$randomNumber]
];

$data=[$person1,$person2];

我想指出的是,拥有这样的重复代码是一种不良做法。您可能想将重复的代码移到一个返回人员的函数中。

答案 1 :(得分:0)

您可以使用递归函数和数组来存储随机生成的数字,以避免重复。试试-

<?php

function random_no($numbers)
{
    $rand = rand(0, 10);// Generate number
    if (!in_array($rand, $numbers)) { // check if already exists in previously generated numbers
        return $rand;
    } else { // generate again and check for unique number
        random_no($numbers);
    }
}
$numbers = [];
$numbers[] = $rand = random_no($numbers);

$person1= [
    'note' => [$rand]
];

$numbers[] = $rand = random_no($numbers);

$person2= [
    'note' => [$rand]
];

$numbers[] = $rand = random_no($numbers);

$person3= [
    'note' => [$rand]
];

$data=[$person1,$person2,$person3];
print_r($data);

Demo