【问题标题】:Generate 7 digit number similar to original number in PHP在 PHP 中生成类似于原始数字的 7 位数字
【发布时间】:2021-05-19 06:35:29
【问题描述】:

我想生成与 PHP 中原始随机数非常相似的 7 位数字。

目的是:原始随机号码模拟声音游戏中使用的电话号码,用户在收听音频时识别正确号码。

使用循环

$original_randomized_number=rand(1000000,9999999);
for ($x = 1; $x <= 3; $x++) {
$generated_telephones[$x] = rand(1000000,9999999);
}

生成3个随机电话号码是可行的,但是识别正确号码太简单了。

F.e.原始随机数 9876543 - 所需结果类似于 - 9865742、8896558、9586543

【问题讨论】:

  • 非常相似 - 你能定义你所说的相似吗?
  • 好的,谢谢。 3-5位数字在各自位置保持不变,4-7位数字保持不变(在任何位置)。如果可以添加难度模式(数字越接近,在声音游戏中越难识别,恕我直言),那就太棒了。

标签: php random


【解决方案1】:

https://www.tehplayground.com/WJiQXDOWT5CR5SwS

$phone = "9876543";
function getSimilar($phone, $num) {
    $out = array();
    for( $x=0; $x<$num; $x++) {
    $new = array();
    $p = str_split($phone);
    $ctr=2;
    foreach ($p as $n) {
     $neg = rand(0,10) > 5? 1:-1;
     $n = abs((intVal($n) + ( rand(0,$ctr) * $neg)) );
     $new[] = min($n,9);
     $ctr++;
    }
    $out[]=implode("",$new); 
  }

  return $out;

}

$nphone = getSimilar($phone, 5);
echo $phone . "\n";
print_r( $nphone);

示例输出:

Array
(
    [0] => 9634999
    [1] => 7988194
    [2] => 9896724
    [3] => 8949969
    [4] => 8998434
)

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多