用GUID生成隨機數(重複性基本為0)

2021-08-19 10:50:21 字數 1655 閱讀 7309

隨機數不管是前端還是後端都會用到的乙個地方,不管是從驗證碼還是各種生成的狀態碼,基本都是隨機生成的,還有就是一些**的演算法,也是用隨機數來處理的,生成隨機數的方法目前是很多的,但是其實很多是重複性很大的,今天簡單的講一下怎麼生成隨機數重複性很低的一種辦法guid(globally unique identifier)一種由演算法生成的二進位制長度為128位的數字識別符號

不重複的原理:guid 的總數達到了2^128(3.4×10^38)個,所以隨機生成兩個相同guid的可能性非常小,但並不為0。用於生成guid的演算法通常都加入了非隨機的引數(如時間),以保證這種重複的情況不會發生。

不bb上**:

guid的js:

function guid() 

guidstr += ***adecimaldate;

guidstr += ***adecimaltime;

while(guidstr.length < 32)

return this.formatguid(guidstr);}/*

* 功能:獲取當前日期的guid格式,即8位數的日期:19700101

* 返回值:返回guid日期格式的字條串

*/guid.prototype.getguiddate = function()

/** 功能:獲取當前時間的guid格式,即8位數的時間,包括毫秒,毫秒為2位數:12300933

* 返回值:返回guid日期格式的字條串

*/guid.prototype.getguidtime = function()

/** 功能: 為一位數的正整數前面新增0,如果是可以轉成非nan數字的字串也可以實現

* 引數: 引數表示準備再前面新增0的數字或可以轉換成數字的字串

* 返回值: 如果符合條件,返回新增0後的字條串型別,否則返回自身的字串

*/guid.prototype.addzero = function(num) else

}/*

* 功能:將y進製的數值,轉換為x進製的數值

* 引數:第1個引數表示欲轉換的數值;第2個引數表示欲轉換的進製;第3個引數可選,表示當前的進製數,如不寫則為10

* 返回值:返回轉換後的字串

*/guid.prototype.hexadecimal = function(num, x, y) else }/*

* 功能:格式化32位的字串為guid模式的字串

* 引數:第1個引數表示32位的字串

* 返回值:標準guid格式的字串

*/guid.prototype.formatguid = function(guidstr) }}

html**:

效果展示:

去掉中間的-以後的效果:

不重複隨機數生成

直接上 生成 0,total 的隨機數 最大隨機數 ilist private static ilistgetrandomsequence int total random random new random for var i listbase.count 1 i 0 i return listo...

用C 生成不重複的隨機數

最近在做乙個能自動生成作業的教學系統時,出現以下問題 需要隨機生成一組不重複的題目,用c 中的random類生成題號,可是他會出現重複,特別是在數量較小的題目中要生成不重複的的題目是很難的,參考了網上的一些方法,包括兩類,一類是通過隨機種子入手,使每一次的 隨機種子不同,來保證不重複,我沒有試過這種...

用C 生成不重複的隨機數

我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重複的題目,在.net framework中提供了乙個專門用來產生隨機數的類system.random。對於隨機數,大家都知道,計算機不 可能產生完全隨機的數字,所謂的隨機數發生器都是通過一定的演算法對事先選定的隨機種子做複雜的運算,用產生的...