美文网首页
6位邀请码生成

6位邀请码生成

作者: 葫芦葫芦快显灵 | 来源:发表于2019-10-15 18:52 被阅读0次

    背景:
    邀请是一种常见的裂变方式,这里生成全局唯一的6位邀请码。
    思路:
    由 0-9 加上24个大写字母(去掉容易混淆的IO)组成的6位邀请码最多可以6^34种组合, 大概在15亿。

    1. 对34重复取余,将余数作为字符数组的下标追加到邀请码的最后
    2. 超过6位去除多余的部分, 不足6位用字符数组的某一位补充
    class InvitationCodeService
    
      CODE_SIZE = 6
    
      # num一般为member_user_id
      def self.generate num
        str = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"
        res = ""
    
        while num > 0
          tmp = num % 34
          num = num / 34
          res << str[tmp]
        end
    
        if res.size > CODE_SIZE
          res[0..5]
        elsif res.size == CODE_SIZE
          res
        else
          str[0] * (CODE_SIZE - res.size) << res
        end
      end
    
    end
    

    相关文章

      网友评论

          本文标题:6位邀请码生成

          本文链接:https://www.haomeiwen.com/subject/nygsmctx.html