-9

如何从 PHP 中的 2 个数字的组合中生成一个唯一的数字?例如,这两个数字的组合;68 和 73,产生 X(X 是唯一的数字)。不管组合号码的顺序如何,它仍然应该产生相同的唯一号码。例如: (68,73)=X 或 (73,68)=X 或 (1,2)=Y 或 (2,1)=Y 的组合,Y 是与 X 不同的数字(因为它是唯一的)。

如果您需要更多信息,请与我们联系。

我认为这个问题与我的问题相似,但它是用 C# 编写的。

我将此代码转换为 PHP:

function getUnique($x, $y){
  if($x>$y){
    return $y | $x << 32;
  }  else{
    return $x | $y << 32;
  }
}

$list = array();
for($i=0 ; $i<100 ;$i++){
  $x = rand(1,10); // I just put any random numbers from 1 to 10 so that I can read it easily.
  $y = rand(1,10);
  $unique = getUnique($x, $y);
  $list[$i] = '('.$x.','.$y.')='.$unique;
 }

//Find out the results
foreach($list as $ans){
   echo $ans.'<br>';
}

但是,它不会产生唯一的数字。此结果的示例:

(2,9)=11

(10,1)=11

(2,9) 应该产生与 (10,1) 不同的数字。

4

1 回答 1

2

不,至少不是一般情况下(尽管如果您指定一些限制可能会有)。

假设n位类型,有 2 n 个可能的值。但是有 2 2n 个可能的值对。显然,从一对到一个值没有唯一的映射。

当然,如果您准备拥有比输入类型更宽的输出类型,那么这很简单。

于 2012-05-20T03:03:32.543 回答