我需要在更長的敘述中(多個用戶可以同時在不同的機器上執行相同的動作)爲多個句子生成唯一的ID。正在生成並連接3個Math.random()的值比1個Math.random()的值更隨機?
我認爲做new Date().getTime()
(也許是一個串聯username
),但是,作爲標識的是在一個循環,而迭代的判決產生,我發現創建副本(如代可在同一毫秒發生)。
var random1 = Math.floor((Math.random() * 10000) + 1).toString(36);
var random2 = Math.floor((Math.random() * 10000) + 1);
var random3 = Math.floor((Math.random() * 10000) + 1);
var id = random1 + random2 + random3;
// generates things like:
// 1h754278042
// 58o83798349
// 3ls28055962
它發生在我雖然(當然,誰的人沒有思考獨特/隨機/密碼多少的問題),這也許是連接三個隨機數ISN」:
所以我目前正在與玩弄再隨機一個隨機數?
產生並連接的3 Math.random()
值比1 Math.random()
的值更隨機?
這個答案(https://security.stackexchange.com/a/124003)規定:
如果隨機發生器產生真正的隨機數據那麼就不會 問題。
但我不知道如何適用於Math.random()
的用法。
編輯:
方案是基於Web,而不是出於安全客戶端,只是爲了確保每個句子在數據庫中唯一的ID。
編輯:
我最終實現:
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
var id = guid();
來源:https://stackoverflow.com/a/105074/1063287
也看到這個問題的答案評論:
其實,RFC允許從隨機創建的UUID號碼。你只需要旋轉幾個比特就可以將其識別爲 等等。參見4.4節。用於從真正 創建UUID隨機或僞隨機數的算法:rfc-archive.org/getrfc.php?rfc=4122
這是否在網絡上運行客戶端,並且您是否計劃將其用於安全性? – Liam
在網絡上是客戶端,而不是安全 - 只是爲了確保每個句子在數據庫中都有唯一的ID。 – user1063287
@ user1063287'Math。random()'的目的不是提供唯一性 –