京東上產生100萬張優惠券,優惠券券號前綴是QA(比如QAK001,QA0U767,QAJUT55,隨機的券號),用什麼演算法能產生100萬張不重複的優惠券?這100萬張優惠券券號碼必須存入資料庫或快取中嗎?
京東上產生100萬張優惠券,優惠券券號前綴是QA(比如QAK001,QA0U767,QAJUT55,隨機的券號),用什麼演算法能產生100萬張不重複的優惠券?這100萬張優惠券券號碼必須存入資料庫或快取中嗎?
可以參考演算法Bloom Filter
推薦UUID。
<code>function guid(){ if (function_exists('com_create_guid')){ return com_create_guid(); }else{ mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } }</code>