《每日工作總結》隨機兌換碼的生成——15.09.14
隨機兌換碼的生成
由於專案中需要生成兌換碼發放給使用者來兌換VIP功能,所以需要一個能夠生成重複率低的隨機演算法,然而才疏學淺,只能想到下面這種簡單的方式,但是也還能保證重複率比較低,基本在M<sup>n</sup>次中才會出現一次,M表示選用的字元的數量,n表示兌換碼的長度,所以個人認為這種方式還是可行的。下面是簡單的流程和程式碼實現。
- 確定兌換碼包含的字符集合
- 確定是否新增分隔符,若需要新增,則選用什麼符號
- 迴圈生成滿足長度的字串,根據位置判斷是否需要插入分隔符。
private static final String CHARARTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/**
* 隨機產生length位長度的字串,每4位以空格分隔
*
* @param length 兌換碼長度
* @return
*/
public static String getCode(int length) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < length; i++) {
Random random = new Random();
int index = random.nextInt(36);
if (i % 4 == 0)
stringBuilder.append(" " + CHARARTERS.charAt(index));
else
stringBuilder.append(CHARARTERS.charAt(index));
}
return stringBuilder.toString().trim();
}
如果還是覺得這樣生成的兌換碼不是很保險,可以在每次生成後與已生成的兌換碼列表做個比較,如果有重複的則重新生成一遍。
相關文章
- 【程式碼隨想錄】零錢兌換
- MATLAB生成隨機數總結Matlab隨機
- 機器學習演算法的隨機資料生成總結機器學習演算法隨機
- javascript隨機生成字串,可以用來生成隨機密碼JavaScript隨機字串密碼
- JS生成隨機密碼JS隨機密碼
- Linux 生成隨機密碼Linux隨機密碼
- php生成唯一隨機碼PHP隨機
- 使用mkpasswd生成隨機密碼隨機密碼
- matlab生成隨機數小結Matlab隨機
- 隨機生成四個驗證碼隨機
- Linux 隨機生成密碼mkpasswdLinux隨機密碼
- 應用:隨機生成驗證碼隨機
- PHP生成隨機密碼的幾種方法PHP隨機密碼
- 生成總和固定 可變範圍的隨機數隨機
- 案例四:Shell指令碼生成隨機密碼指令碼隨機密碼
- ruby指令碼,隨機生成複雜密碼指令碼隨機密碼
- 每日總結
- 生成隨機排列隨機
- 生成隨機數隨機
- javascript生成隨機數程式碼例項JavaScript隨機
- js生成隨機數程式碼例項JS隨機
- linux 生成隨機密碼,uuidLinux隨機密碼UI
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- python生成隨機數、隨機字串Python隨機字串
- 工作隨意總結20240830
- 按概率生成隨機結果,自己控制字元結果的生成類似彩票系統隨機字元
- 9.27每日總結
- 3.13每日總結
- 3.21每日總結
- 4.2每日總結
- php生成一個可選位數的隨機碼PHP隨機
- Python隨機生成驗證碼的兩種方法Python隨機
- 更安全的隨機數生成隨機
- PHP 生成更好的隨機數PHP隨機
- 隨機生成使用者資訊(號碼、名字)隨機
- python生成隨機圖形驗證碼Python隨機
- 隨機生成六位數驗證碼隨機
- JavaScript 生成隨機數JavaScript隨機