邀請碼生成演算法
⑴ 智慧生活邀請碼怎麼生成
步驟一(打亂數字順序):首先輸入灶明姿的序列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、邀請碼具有唯一性,不能出現兩個場景下生成一樣的邀請碼;不規律性,至少在字面上不能猜出規律來以及高效性,生成邀請碼的演算法不能太過復雜,或者太消耗性能。