邀请码生成算法
⑴ 智慧生活邀请码怎么生成
步骤一(打乱数字顺序):首先输入灶明姿的序列x是唯一的,假设我的邀请码最短长度MIN_LENGTH是6,那么我先把x转成长度至少为6的数字串,不足6位的高位补0。然后,对低6位按照一定规则进行打乱,比如固定的交换第4位和第5位,然后交换第1位和第3位等。让再次生成的数字串不是连续的。(当然此处的打乱长度可以不一定是6位,但是邀请码是6位的话,数字串6位长度不会超过邀请码的长度)
步骤二(32进制乱序编码):由步骤一生成的乱序数字串进行32进制乱序编码,为什么选取32进制?因为保留了a、b、c、d四个字母在后续步骤中做随机补全。
步骤三(随机补全):因为步骤二保留了a、隐绝b、c、d四个槐薯关键字母,而且生成的字符串s不一定达到了MIN_LENGTH长度6。那么就用关键字母补全剩余的位数,而且是随机选取补全到字符串中的随机位置。最终生成长度优先为6位的邀请码。(后续x越大的时候,邀请码会超过6位,但是基本上高位可能会基本上某段区间是一样的,不过规律还是比较不明显的)
采用 Shareinstall 的方案,可以把用户邀请码参数直接“安装”到 APP 中,免得用户再输入邀请码,有奖邀请注册的活动在用户不知不觉间就能够有效开展下去。
⑵ php邀请码
还是哥负责任 来 哥来讲讲:
demo
<?php
session_start();
if(isset($_GET['btn1'])){//btn1为点击生成激活码穿过来的ID,通过AJAX
$link=mysql_connect('localhost','root','')ordie('数据库连接错误');
mysql_query('setnamesutf8');
$jihuoma=substr($_SESSION['user_id'],4,6).mt_rand(0,9).mt_rand(0,9);//就是根据用户ID来的4为随机验证码
$result=mysql_query("INSERTINTOuser_yq(id,str)VALUES('$id','$str')");
if($result){
echo$jihuoma;//执行用户生成的随机激活码
}else{
echo'1234';//系统原始激活码
}
}
考虑到用户的体验度 ,以上代码均通过AJAX来传递 ,AJAX你自己写 ,如果不是这样的,你可以说说的你需求,打字好辛苦的,看着办,同学
⑶ 邀请码是怎么弄的
获得邀请码的方式有购买,别人邀请以及领取免费邀请码。
1、已经注册的会员通过在论坛活动(如发帖,回帖等),获得论坛币后,当你的权限和论坛币达到购买条件时,在需要的时候就可以支付一定的论坛币,购买邀请码,
3、有的论坛可能会定期免费发放邀请码;也有的论坛会在某些特定的时间(如节日[一般集中在五一、十一、春节等大型节日期间迹信],建站周年日等)开放普通注册,这时注册无须邀请码。
注意事项:
1、邀请码理论上用时间戳生成的数字串基本上是唯一的,如果经过一定规则的打乱顺序,然后进行字母映射的话,字面上的规律还是不怎么可能直接看出来的。
但是时间戳有一个不好的地方,就是长度太长了,当前我想姿肆轮要使用的场景下,邀请码推荐是生成6位的,6位用完了才雹核会去使用更长的。此外,对于长度短的随机算法,出现冲突,去重的过程不管从空间上还是时间上去解决都一定程度上消耗性能。
2、邀请码具有唯一性,不能出现两个场景下生成一样的邀请码;不规律性,至少在字面上不能猜出规律来以及高效性,生成邀请码的算法不能太过复杂,或者太消耗性能。