【问题标题】:How to generate unique small integer from a larger integer如何从较大的整数生成唯一的小整数
【发布时间】:2020-11-14 09:36:50
【问题描述】:

我想从一个来自 id 的较大整数中生成一个介于 1 和 3 之间的唯一小整数。例如:

id: 348593 ----> generated: 2

id: 98762  ----> generated: 3 

id: 12     ----> generated: 1 

我使用模块来处理两个数字(1 和 2):

$id = 43784643;
$module = $id % 2; // 0 if even, 1 if odd

$generated = $module + 1;

考虑到同一个 id 的小数必须始终相同,你会怎么做?

【问题讨论】:

    标签: php unique


    【解决方案1】:

    您似乎已经有了一个很好的解决方案:模数。

    $generated = ($id % 3) + 1
    

    【讨论】:

      【解决方案2】:

      您的解决方案没有问题,但您需要使用3 而不是2

      我也会跳过创建无意义的变量,否则我会说这是一个可靠的解决方案。

      如果有问题,能否详细说明问题。

      $test = array(
              123456789,987654321,2222,111111,
              5555555,63243514513,7,43,222,
              65462,9191910);
      
      foreach($test as $k=>$v) {
          echo '['.$v.'] ['.(($v % 3) +1).']';
      }
      

      结果:

      [123456789] [1]
      [987654321] [1]
      [2222] [3]
      [111111] [1]
      [5555555] [3]
      [63243514513] [2]
      [7] [2]
      [43] [2]
      [222] [1]
      [65462] [3]
      [9191910] [1]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-06
        相关资源
        最近更新 更多