国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PostgreSQL不使用擴(kuò)展,生成隨機(jī)int8值,生成均勻分布的隨機(jī)int8值

這篇具有很好參考價(jià)值的文章主要介紹了PostgreSQL不使用擴(kuò)展,生成隨機(jī)int8值,生成均勻分布的隨機(jī)int8值。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

PostgreSQL使用擴(kuò)展插件pgcrypto,生成隨機(jī)int8值

在PostgreSQL中,可以使用 pgcrypto 擴(kuò)展提供的函數(shù) gen_random_uuid() 生成隨機(jī)的UUID(Universally Unique Identifier),其中包含8字節(jié)隨機(jī)整數(shù)(int8值),如下所示:

CREATE EXTENSION IF NOT EXISTS "pgcrypto";

SELECT substring(gen_random_uuid()::text from 1 for 16)::bit(64)::bigint;

上述SQL語(yǔ)句使用 gen_random_uuid() 函數(shù)生成隨機(jī)UUID,并將其轉(zhuǎn)換為字符串類型。然后,使用 substring() 函數(shù)從字符串中提取前16個(gè)字符,并將其轉(zhuǎn)換為 bit(64) 類型。最后,使用 bigint 類型進(jìn)行值的轉(zhuǎn)換,得到一個(gè)隨機(jī)的8字節(jié)整數(shù)(int8值)。

PostgreSQL不使用擴(kuò)展,生成隨機(jī)int8值

不使用 pgcrypto 擴(kuò)展,可以使用 Postgres 內(nèi)置的 random() 函數(shù)生成隨機(jī)數(shù),并將其轉(zhuǎn)換為您需要的整數(shù)類型。以下是一個(gè)示例 SQL 語(yǔ)句,可以生成一個(gè)隨機(jī)的8字節(jié)整數(shù):

SELECT floor(random() * 9223372036854775807)::bigint;

在上述語(yǔ)句中,random() 函數(shù)返回一個(gè) [0, 1) 之間的浮點(diǎn)數(shù),將其乘以 9223372036854775807(2^63 - 1),得到一個(gè) [0, 9223372036854775807) 之間的浮點(diǎn)數(shù)。然后使用 floor() 函數(shù)將其轉(zhuǎn)換為一個(gè)整數(shù),并使用 ::bigint 將其轉(zhuǎn)換為一個(gè)64位的整數(shù)類型(bigint)。

請(qǐng)注意,由于 random() 函數(shù)返回浮點(diǎn)數(shù),因此生成的整數(shù)并不是均勻分布的。如果需要更好的隨機(jī)性能,請(qǐng)考慮使用 pgcrypto 擴(kuò)展中提供的隨機(jī)數(shù)生成函數(shù)。

PostgreSQL不使用擴(kuò)展,生成均勻分布的隨機(jī)int8值

如果需要生成均勻分布的隨機(jī)int8值,可以使用 Postgres 內(nèi)置的 random() 函數(shù)和位運(yùn)算符來(lái)生成。以下是一個(gè)示例 SQL 語(yǔ)句,可以生成一個(gè)均勻分布的隨機(jī)8字節(jié)整數(shù):

SELECT trunc(random()*pow(2,64)::numeric)::bigint^trunc(random()*pow(2,64)::numeric)::bigint;

在上述語(yǔ)句中,我們使用 pow() 函數(shù)計(jì)算出一個(gè)64位無(wú)符號(hào)整數(shù)的最大值(2的64次方),然后將該值轉(zhuǎn)換為 numeric 類型。接下來(lái),我們使用 random() 函數(shù)兩次產(chǎn)生兩個(gè)0到1之間的隨機(jī)數(shù),并將它們乘以最大值,得到兩個(gè)潛在的64位無(wú)符號(hào)整數(shù)值。使用 trunc() 函數(shù)將它們轉(zhuǎn)換為整數(shù),并分別將它們按位異或,得到一個(gè)均勻分布的隨機(jī)8字節(jié)整數(shù)。

值得注意的是,這種方法也不是完美的均勻分布,但已經(jīng)足夠用于大多數(shù)情況。如果需要更高質(zhì)量的隨機(jī)整數(shù),請(qǐng)使用 pgcrypto 擴(kuò)展中提供的隨機(jī)數(shù)生成函數(shù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-488051.html

到了這里,關(guān)于PostgreSQL不使用擴(kuò)展,生成隨機(jī)int8值,生成均勻分布的隨機(jī)int8值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包