本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體而言,涉及一種分組方法及裝置。
背景技術(shù):
在互聯(lián)網(wǎng)產(chǎn)品的實(shí)際生產(chǎn)環(huán)境中,會(huì)有很多場(chǎng)景需要將用戶分到不同的組別,以使其對(duì)應(yīng)的用戶能夠體驗(yàn)不同的算法或服務(wù)?,F(xiàn)有技術(shù)中,缺乏一種可按預(yù)設(shè)比例自動(dòng)根據(jù)用戶id將海量用戶進(jìn)行分組的方案。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種分組方法及裝置,以改善上述問題。
本發(fā)明實(shí)施例提供一種分組方法,所述方法包括:
獲得包括多個(gè)組項(xiàng)的配置文件,所述多個(gè)組項(xiàng)為按預(yù)設(shè)比例設(shè)置;
解析所述配置文件,得到所述多個(gè)組項(xiàng)的分布數(shù)組;
根據(jù)所述配置文件生成密鑰字符串及密鑰隨機(jī)數(shù),并根據(jù)所述密鑰字符串和所述密鑰隨機(jī)數(shù)生成混淆因子;
利用所述混淆因子對(duì)獲得的用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到轉(zhuǎn)換數(shù)值;
按預(yù)設(shè)規(guī)則對(duì)所述轉(zhuǎn)換數(shù)值與所述分布數(shù)組進(jìn)行處理,得到處理結(jié)果,根據(jù)所述處理結(jié)果得到所述用戶id所屬組項(xiàng)。
進(jìn)一步地,所述解析所述配置文件,得到所述多個(gè)組項(xiàng)的分布數(shù)組的步驟,包括:
解析所述配置文件,獲得所述多個(gè)組項(xiàng)的分組數(shù)組,其中,所述組項(xiàng)為n個(gè),n為正整數(shù);
將所述分組數(shù)組中前i項(xiàng)組項(xiàng)的分組數(shù)值進(jìn)行累加,獲得第i項(xiàng)組項(xiàng)的分布數(shù)值,其中,i=1,2,…,n;
改變i值,獲得n個(gè)組項(xiàng)的分布數(shù)值,根據(jù)獲得的n個(gè)組項(xiàng)的分布數(shù)值得到n個(gè)組項(xiàng)的分布數(shù)組。
進(jìn)一步地,所述根據(jù)所述密鑰字符串和所述密鑰隨機(jī)數(shù)生成混淆因子的步驟,包括:
計(jì)算得到所述密鑰字符串中的各字符的ascii值;
對(duì)所述密鑰隨機(jī)數(shù)進(jìn)行位偏移運(yùn)算,根據(jù)位偏移運(yùn)算后的密鑰隨機(jī)數(shù)和所述密鑰字符串中的各所述字符的ascii值,得到更新的密鑰隨機(jī)數(shù);
結(jié)合更新前后的密鑰隨機(jī)數(shù)得到混淆因子。
進(jìn)一步地,所述根據(jù)所述配置文件生成密鑰字符串及密鑰隨機(jī)數(shù)的步驟,包括:
根據(jù)所述配置文件的業(yè)務(wù)信息及版本信息生成密鑰字符串,并設(shè)置密鑰隨機(jī)數(shù)。
進(jìn)一步地,所述按預(yù)設(shè)規(guī)則對(duì)所述轉(zhuǎn)換數(shù)值與所述分布數(shù)組進(jìn)行處理,得到處理結(jié)果的步驟,包括:
將所述轉(zhuǎn)換數(shù)值分別與所述分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)組項(xiàng)的分布數(shù)值進(jìn)行比較,得到比較結(jié)果。
進(jìn)一步地,所述按預(yù)設(shè)規(guī)則對(duì)所述轉(zhuǎn)換數(shù)值與所述分布數(shù)組進(jìn)行處理,得到處理結(jié)果,根據(jù)所述處理結(jié)果得到所述用戶id所屬組項(xiàng)的步驟,包括:
將所述轉(zhuǎn)換數(shù)值分別與所述分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)組項(xiàng)的分布數(shù)值進(jìn)行做差處理;
若所述轉(zhuǎn)換數(shù)值與第i項(xiàng)組項(xiàng)的分布數(shù)值的差值大于預(yù)設(shè)值,且所述轉(zhuǎn)換數(shù)值與第i+1項(xiàng)組項(xiàng)的分布數(shù)值的差值小于所述預(yù)設(shè)值,則判定所述用戶id屬于第i+1項(xiàng)組項(xiàng)。
本發(fā)明另一較佳實(shí)施例提供一種分組裝置,所述分組裝置包括獲取模塊、解析模塊、生成模塊、轉(zhuǎn)換模塊以及處理模塊;
所述獲取模塊用于獲得包括多個(gè)組項(xiàng)的配置文件,所述多個(gè)組項(xiàng)為按預(yù)設(shè)比例設(shè)置;
所述解析模塊用于解析所述配置文件,得到所述多個(gè)組項(xiàng)的分布數(shù)組;
所述生成模塊用于根據(jù)所述配置文件生成密鑰字符串及密鑰隨機(jī)數(shù),并根據(jù)所述密鑰字符串和所述密鑰隨機(jī)數(shù)生成混淆因子;
所述轉(zhuǎn)換模塊用于利用所述混淆因子對(duì)獲得的用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到轉(zhuǎn)換數(shù)值;
所述處理模塊用于按預(yù)設(shè)規(guī)則對(duì)所述轉(zhuǎn)換數(shù)值與所述分布數(shù)組進(jìn)行處理,得到處理結(jié)果,根據(jù)所述處理結(jié)果得到所述用戶id所屬組項(xiàng)。
進(jìn)一步地,所述解析模塊包括分組數(shù)組獲取單元、累加單元及分布數(shù)組獲取單元;
所述分組數(shù)組獲取單元用于解析所述配置文件,獲得所述多個(gè)組項(xiàng)的分組數(shù)組,其中,所述組項(xiàng)為n個(gè),n為正整數(shù);
所述累加單元用于將所述分組數(shù)組中前i項(xiàng)組項(xiàng)的分組數(shù)值進(jìn)行累加,獲得第i項(xiàng)組項(xiàng)的分布數(shù)值,其中,i=1,2,…,n;
所述分布數(shù)組獲取單元用于改變i值,獲得n個(gè)組項(xiàng)的分布數(shù)值,根據(jù)獲得的n個(gè)組項(xiàng)的分布數(shù)值得到n個(gè)組項(xiàng)的分布數(shù)組。
進(jìn)一步地,所述生成模塊包括計(jì)算單元、更新單元以及混淆因子生成單元;
所述計(jì)算單元用于計(jì)算得到所述密鑰字符串中的各字符的ascii值;
所述更新單元用于對(duì)所述密鑰隨機(jī)數(shù)進(jìn)行位偏移運(yùn)算,根據(jù)位偏移運(yùn)算后的密鑰隨機(jī)數(shù)和所述密鑰字符串中的各所述字符的ascii值,得到更新的密鑰隨機(jī)數(shù);
所述混淆因子生成單元用于結(jié)合更新前后的密鑰隨機(jī)數(shù)得到混淆因子。
進(jìn)一步地,所述處理模塊包括差值計(jì)算單元以及判定單元;
所述差值計(jì)算單元用于將所述轉(zhuǎn)換數(shù)值分別與所述分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)組項(xiàng)的分布數(shù)值進(jìn)行做差處理;
所述判定單元用于在所述轉(zhuǎn)換數(shù)值與第i項(xiàng)組項(xiàng)的分布數(shù)值的差值大于預(yù)設(shè)值,且所述轉(zhuǎn)換數(shù)值與第i+1項(xiàng)組項(xiàng)的分布數(shù)值的差值小于所述預(yù)設(shè)值時(shí),判定所述用戶id屬于第i+1項(xiàng)組項(xiàng)。
本發(fā)明實(shí)施例提供的分組方法及裝置,通過解析包括多個(gè)按預(yù)設(shè)比例設(shè)置的組項(xiàng)的配置文件以獲得密鑰字符串及密鑰隨機(jī)數(shù),并根據(jù)密鑰字符串和密鑰隨機(jī)數(shù)生成混淆因子。利用混淆因子對(duì)用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,并根據(jù)轉(zhuǎn)換結(jié)果將用戶id按預(yù)設(shè)比例進(jìn)行分組。本發(fā)明提供的分組方案具備數(shù)學(xué)理論依據(jù),可通過生成不同的混淆因子以將用戶id按預(yù)設(shè)比例分設(shè)于不同的組別中。通過該分組方案,可根據(jù)需求對(duì)用戶id實(shí)現(xiàn)指定比例分組,以為其對(duì)應(yīng)的用戶提供不同的服務(wù)。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1為本發(fā)明實(shí)施例提供的一種分組方法的應(yīng)用場(chǎng)景示意圖。
圖2為本發(fā)明實(shí)施例提供的服務(wù)器的示意性結(jié)構(gòu)框圖。
圖3為本發(fā)明實(shí)施例提供的分組方法的流程圖。
圖4為圖3中步驟s103的子步驟的流程圖。
圖5為圖3中步驟s105的子步驟的流程圖。
圖6為圖3中步驟s109的子步驟的流程圖。
圖7為本發(fā)明實(shí)施例提供的分組裝置的功能模塊框圖。
圖8為本發(fā)明實(shí)施例提供的解析模塊的功能模塊框圖。
圖9為本發(fā)明實(shí)施例提供的生成模塊的功能模塊框圖。
圖10為本發(fā)明實(shí)施例提供的處理模塊的功能模塊框圖。
圖標(biāo):100-服務(wù)器;110-分組裝置;111-獲取模塊;112-解析模塊;1121-分組數(shù)組獲取單元;1122-累加單元;1123-分布數(shù)組獲取單元;113-生成模塊;1131-計(jì)算單元;1132-更新單元;1133-混淆因子生成單元;114-轉(zhuǎn)換模塊;115-處理模塊;1151-差值計(jì)算單元;1152-判定單元;120-處理器;130-存儲(chǔ)器;200-用戶端。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。同時(shí),在本發(fā)明的描述中,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“設(shè)置”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。
請(qǐng)參閱圖1,為本發(fā)明實(shí)施例提供的一種分組方法的應(yīng)用場(chǎng)景示意圖。該場(chǎng)景包括服務(wù)器100和用戶端200。所述用戶端200通過網(wǎng)絡(luò)與所述服務(wù)器100通信連接,以進(jìn)行數(shù)據(jù)通信或交互。在本實(shí)施例中,所述用戶端200可以包括多個(gè)(圖中只示出一個(gè)),多個(gè)所述用戶端200與所述服務(wù)器100通信連接。
其中,所述用戶端200可以是但不限于個(gè)人電腦、平板電腦、智能手機(jī)、移動(dòng)上網(wǎng)設(shè)備、數(shù)字電視等。所述服務(wù)器100可以是網(wǎng)絡(luò)服務(wù)器、數(shù)據(jù)庫服務(wù)器,可以是單獨(dú)的服務(wù)器也可以是服務(wù)器集群等。
請(qǐng)參閱圖2,為本發(fā)明實(shí)施例提供的上述服務(wù)器100的示意性結(jié)構(gòu)框圖。所述服務(wù)器100包括分組裝置110、處理器120及存儲(chǔ)器130。其中,所述存儲(chǔ)器130與所述處理器120之間直接或間接的電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。所述分組裝置110包括至少一個(gè)可以軟件或固件的形式存儲(chǔ)于所述存儲(chǔ)器130中或固化在所述服務(wù)器100的操作系統(tǒng)中的軟件功能模塊。所述處理器120用于執(zhí)行所述存儲(chǔ)器130中存儲(chǔ)的可執(zhí)行模塊,例如所述分組裝置110包括的軟件功能模塊或計(jì)算機(jī)程序。
請(qǐng)參閱圖3,是本發(fā)明實(shí)施例提供的一種應(yīng)用于上述服務(wù)器100的分組方法的流程圖。所應(yīng)說明的是,本發(fā)明提供的方法不以圖3及以下所述的具體順序?yàn)橄拗?。下面將?duì)圖3中示出的各步驟進(jìn)行詳細(xì)說明。
步驟s101,獲得包括多個(gè)組項(xiàng)的配置文件,所述多個(gè)組項(xiàng)為按預(yù)設(shè)比例設(shè)置。
步驟s103,解析所述配置文件,得到所述多個(gè)組項(xiàng)的分布數(shù)組。
在互聯(lián)網(wǎng)產(chǎn)品的實(shí)際生產(chǎn)環(huán)境中,會(huì)有很多場(chǎng)景需要將用戶分到不同的組別,以體驗(yàn)不同的算法或服務(wù)。假設(shè)此處有一系列用戶id,userlds=[10000001,…,10000049,…],現(xiàn)有a、b、c三種算法,需要將這一系列的用戶id進(jìn)行分組,使其對(duì)應(yīng)的用戶能夠體驗(yàn)a、b、c三種不同的算法之一,以便來對(duì)比這三種算法。
可選地,需要獲得一配置文件,該配置文件為對(duì)用戶id進(jìn)行分組的依據(jù)??蛇x地,所述配置文件中包括多個(gè)組項(xiàng),且所述多個(gè)組項(xiàng)為按預(yù)設(shè)比例進(jìn)行設(shè)置。其中,每個(gè)組項(xiàng)所占的比例大于0但小于1,并且所有組項(xiàng)所占比例之和等于1。
可選地,請(qǐng)參閱圖4,在本實(shí)施例中,步驟s103包括步驟s1031、步驟s1033和步驟s1035三個(gè)子步驟。
步驟s1031,解析所述配置文件,獲得所述多個(gè)組項(xiàng)的分組數(shù)組,其中,所述組項(xiàng)為n個(gè),n為正整數(shù)。
步驟s1033,將所述分組數(shù)組中前i項(xiàng)組項(xiàng)的分組數(shù)值進(jìn)行累加,獲得第i項(xiàng)組項(xiàng)的分布數(shù)值,其中,i=1,2,…,n。
步驟s1035,改變i值,獲得n個(gè)組項(xiàng)的分布數(shù)值,根據(jù)獲得的n個(gè)組項(xiàng)的分布數(shù)值得到n個(gè)組項(xiàng)的分布數(shù)組。
可選地,首先對(duì)所述配置文件進(jìn)行解析,獲得所述配置文件中多個(gè)組項(xiàng)的分組數(shù)組,其中,所述配置文件中組項(xiàng)的個(gè)數(shù)可為n個(gè),n為正整數(shù)。假設(shè)在所述配置文件中包含a、b、c三個(gè)組項(xiàng),且三個(gè)組項(xiàng)分別所占的比例為0.2、0.2、0.6,則獲得的上述組項(xiàng)的分組數(shù)組為groups=[0.2,0.2,0.6]。
將獲得的多個(gè)組項(xiàng)的分組數(shù)組中的前i項(xiàng)組項(xiàng)的分組數(shù)值進(jìn)行累加,以獲得第i項(xiàng)組項(xiàng)的分布數(shù)組,其中i=1,2…,n。則不斷改變i的取值,可獲所述配置文件中所有組項(xiàng)的分布數(shù)組,所述組項(xiàng)的分布數(shù)組可按以下方式計(jì)算獲得:groupsums[1]=groups[1],groupsums[i]=groups[1]+…+groups[i]。例如,針對(duì)上述的a、b、c三個(gè)組項(xiàng)分別的分布數(shù)組則為:
groupsums[1]=groups[1]=0.2
groupsums[2]=groups[1]+groups[2]=0.2+0.2=0.4
groupsums[3]=groups[1]+groups[2]+groups[3]=0.2+0.2+0.6=1
步驟s105,根據(jù)所述配置文件生成密鑰字符串及密鑰隨機(jī)數(shù),并根據(jù)所述密鑰字符串和所述密鑰隨機(jī)數(shù)生成混淆因子。
可選地,在本實(shí)施例中,不同的配置文件攜帶有不同的業(yè)務(wù)信息及版本信息,可根據(jù)獲得的所述配置文件的業(yè)務(wù)信息和版本信息生成密鑰字符串。例如,若所述配置文件的業(yè)務(wù)名為“key”,其版本號(hào)version為“1.0”,則生成的密鑰字符串為keystr=“key1.0”。此外,還需設(shè)置一密鑰隨機(jī)數(shù)keyrandom,以便后續(xù)根據(jù)該密鑰隨機(jī)數(shù)keyrandom和密鑰字符串keystr生成混淆因子。
可選地,請(qǐng)參閱圖5,在本實(shí)施例中,步驟s105包括步驟s1051、步驟s1053和步驟s1055三個(gè)子步驟。
步驟s1051,計(jì)算得到所述密鑰字符串中的各字符的ascii值。
步驟s1053,對(duì)所述密鑰隨機(jī)數(shù)進(jìn)行位偏移運(yùn)算,根據(jù)位偏移運(yùn)算后的密鑰隨機(jī)數(shù)和所述密鑰字符串中的各所述字符的ascii值,得到更新的密鑰隨機(jī)數(shù)。
步驟s1055,結(jié)合更新前后的密鑰隨機(jī)數(shù)得到混淆因子。
可選地,在本實(shí)施例中,在獲得密鑰字符串keystr和密鑰隨機(jī)數(shù)keyrandom后,首先,遍歷該密鑰字符串keystr中的每個(gè)字符,獲得各字符其對(duì)應(yīng)的ascii值,例如,將該密鑰字符串keystr的第一字符其對(duì)應(yīng)的ascii值記為tmp1。同時(shí),對(duì)所述密鑰隨機(jī)數(shù)keyrandom進(jìn)行位偏移運(yùn)算,例如,將所述密鑰隨機(jī)數(shù)keyrandom左偏移5位得到tmp2,將該密鑰隨機(jī)數(shù)keyrandom右偏移2位得到tmp3,取tmp1、tmp2和tmp3三者的和,記為tmpsum。然后將得到的tmpsum與進(jìn)行位偏移之前的密鑰隨機(jī)數(shù)keyrandom進(jìn)行異或運(yùn)算,得到更新后的密鑰隨機(jī)數(shù)keyrandom。再將更新后得到的密鑰隨機(jī)數(shù)keyrandom進(jìn)行位偏移運(yùn)算,并結(jié)合所述密鑰字符串keystr的第二個(gè)字符其對(duì)應(yīng)的ascii值,得到其和,再將得到的和與該更新后的密鑰隨機(jī)數(shù)keyrandom進(jìn)行異或運(yùn)算,以再次對(duì)密鑰隨機(jī)數(shù)進(jìn)行更新。按此邏輯,一直到遍歷完所述密鑰字符串中每一個(gè)字符為止,最終得到的更新的密鑰隨機(jī)數(shù)keyrandom即為生成的混淆因子key。在本實(shí)施例中,例如,密鑰字符串keystr=“key1.0”,且密鑰隨機(jī)數(shù)keyrandom=1315423911,則得到的混淆因子key=1453132441224974378。
步驟s107,利用所述混淆因子對(duì)獲得的用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到轉(zhuǎn)換數(shù)值。
在本實(shí)施例中,將獲得的用戶id與生成的混淆因子進(jìn)行一系列的計(jì)算,從而對(duì)用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到轉(zhuǎn)換數(shù)值。其中,所述用戶id可以是所述服務(wù)器100從與其通信連接的用戶端200所獲得,也可以是所述服務(wù)器100預(yù)存的用戶id,在本實(shí)施例中,對(duì)此并不作具體限制。假設(shè),從海量的用戶id中任意取一id數(shù)longnum,將longnum與生成的混淆因子按如下方式進(jìn)行計(jì)算:將longnum與所述混淆因子相乘,將得到的乘積整除1000,取得其余數(shù)之后將余數(shù)加1,再將得到的和除以1000,最終得到的小于等于1的數(shù)即為得到的轉(zhuǎn)換數(shù)值transferredlongnum。即transferredlongnum=(longnum*key%1000+1)/1000。在本實(shí)施例中,若將longnum取為10000049,則得到的轉(zhuǎn)換數(shù)值transferredlongnum=0.8129。
步驟s109,按預(yù)設(shè)規(guī)則對(duì)所述轉(zhuǎn)換數(shù)值與所述分布數(shù)組進(jìn)行處理,得到處理結(jié)果,根據(jù)所述處理結(jié)果得到所述用戶id所屬組項(xiàng)。
在本實(shí)施例中,將得到的轉(zhuǎn)換數(shù)值分別與上述獲得的多個(gè)組項(xiàng)的分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)的分布數(shù)值進(jìn)行比較,根據(jù)比較結(jié)果,對(duì)用戶id的所屬組項(xiàng)進(jìn)行判別。
可選地,請(qǐng)參閱圖6,在本實(shí)施例中,步驟s109可以包括步驟s1091和步驟s1093兩個(gè)子步驟。
步驟s1091,將所述轉(zhuǎn)換數(shù)值分別與所述分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)組項(xiàng)的分布數(shù)值進(jìn)行做差處理。
步驟s1093,若所述轉(zhuǎn)換數(shù)值與第i項(xiàng)組項(xiàng)的分布數(shù)值的差值大于預(yù)設(shè)值,且所述轉(zhuǎn)換數(shù)值與第i+1項(xiàng)組項(xiàng)的分布數(shù)值的差值小于所述預(yù)設(shè)值,則判定所述用戶id屬于第i+1項(xiàng)組項(xiàng)。
對(duì)得到的轉(zhuǎn)換數(shù)值進(jìn)行所屬組別的判別,從而得到其對(duì)應(yīng)的用戶id所屬組別,在本實(shí)施例中,可采用下述方式對(duì)轉(zhuǎn)換數(shù)值進(jìn)行組項(xiàng)判別:將轉(zhuǎn)換數(shù)值分別與分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)的分布數(shù)值進(jìn)行做差,即transferredlongnum-groupsums[i]以及transferredlongnum-groupsums[i+1]。若所述轉(zhuǎn)換數(shù)值與第i項(xiàng)組項(xiàng)的分布數(shù)值的差值大于預(yù)設(shè)值,且所述轉(zhuǎn)換數(shù)值與第i+1項(xiàng)組項(xiàng)的分布數(shù)值的差值小于所述預(yù)設(shè)值,例如,所述預(yù)設(shè)值為0.0001,即:
則可以判定該轉(zhuǎn)換數(shù)值transferredlongnum對(duì)應(yīng)的用戶id屬于第i+1項(xiàng)組項(xiàng)。在此例中,若得到的轉(zhuǎn)換數(shù)值為0.8129,則可以得到與其對(duì)應(yīng)的轉(zhuǎn)換前的用戶id,即10000049所屬組項(xiàng)為c組。并且在混淆因子不變且配置文件分組情況不變的情況下,該用戶id所屬組項(xiàng)也不會(huì)改變。
采用本實(shí)施例提供的分組方法對(duì)海量的用戶id進(jìn)行分組,最終得到的分組結(jié)果比例接近預(yù)設(shè)設(shè)定的指定比例,即0.2:0.2:0.6。在上述例子中,對(duì)10000000到20000000這一系列的用戶id數(shù)字進(jìn)行分組,分組結(jié)果為2016015:1999974:5984011,接近0.2:0.2:0.6,以大數(shù)定律為根據(jù),證明對(duì)海量用戶id的分組結(jié)果與預(yù)設(shè)的指定比例組項(xiàng)保持一致。
請(qǐng)參閱圖7,為本發(fā)明實(shí)施例提供的一種分組裝置110的功能模塊框圖。所述分組裝置110包括獲取模塊111、解析模塊112、生成模塊113、轉(zhuǎn)換模塊114以及處理模塊115。
所述獲取模塊111用于獲得包括多個(gè)組項(xiàng)的配置文件,所述多個(gè)組項(xiàng)為按預(yù)設(shè)比例設(shè)置。具體地,該獲取模塊111可用于執(zhí)行圖3中所示的步驟s101,具體的操作方法可參考步驟s101的詳細(xì)描述。
所述解析模塊112用于解析所述配置文件,得到所述多個(gè)組項(xiàng)的分布數(shù)組。具體地,該解析模塊112可用于執(zhí)行圖3中所示的步驟s103,具體的操作方法可參考步驟s103的詳細(xì)描述。
所述生成模塊113用于根據(jù)所述配置文件生成密鑰字符串及密鑰隨機(jī)數(shù),并根據(jù)所述密鑰字符串和所述密鑰隨機(jī)數(shù)生成混淆因子。具體地,該生成模塊113可用于執(zhí)行圖3中所示的步驟s105,具體的操作方法可參考步驟s105的詳細(xì)描述。
所述轉(zhuǎn)換模塊114用于利用所述混淆因子對(duì)獲得的用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到轉(zhuǎn)換數(shù)值。具體地,該轉(zhuǎn)換模塊114可用于執(zhí)行圖3中所示的步驟s107,具體的操作方法可參考步驟s107的詳細(xì)描述。
所述處理模塊115用于按預(yù)設(shè)規(guī)則對(duì)所述轉(zhuǎn)換數(shù)值與所述分布數(shù)組進(jìn)行處理,得到處理結(jié)果,根據(jù)所述處理結(jié)果得到所述用戶id所屬組項(xiàng)。具體地,該處理模塊115可用于執(zhí)行圖3中所示的步驟s109,具體的操作方法可參考步驟s109的詳細(xì)描述。
可選地,請(qǐng)參閱圖8,在本實(shí)施例中,所述解析模塊112包括分組數(shù)組獲取單元1121、累加單元1122及分布數(shù)組獲取單元1123。
所述分組數(shù)組獲取單元1121用于解析所述配置文件,獲得所述多個(gè)組項(xiàng)的分組數(shù)組,其中,所述組項(xiàng)為n個(gè),n為正整數(shù)。具體地,該分組數(shù)組獲取單元1121可用于執(zhí)行圖4中所示的步驟s1031,具體的操作方法可參考步驟s1031的詳細(xì)描述。
所述累加單元1122用于將所述分組數(shù)組中前i項(xiàng)組項(xiàng)的分組數(shù)值進(jìn)行累加,獲得第i項(xiàng)組項(xiàng)的分布數(shù)值,其中,i=1,2,…,n。具體地,該累加單元1122可用于執(zhí)行圖4中所示的步驟s1033,具體的操作方法可參考步驟s1033的詳細(xì)描述。
所述分布數(shù)組獲取單元1123用于改變i值,獲得n個(gè)組項(xiàng)的分布數(shù)值,根據(jù)獲得的n個(gè)組項(xiàng)的分布數(shù)值得到n個(gè)組項(xiàng)的分布數(shù)組。具體地,該分布數(shù)組獲取單元1123可用于執(zhí)行圖4中所示的步驟s1035,具體的操作方法可參考步驟s1035的詳細(xì)描述。
可選地,請(qǐng)參閱圖9,在本實(shí)施例中,所述生成模塊113包括計(jì)算單元1131、更新單元1132以及混淆因子生成單元1133。
所述計(jì)算單元1131用于計(jì)算得到所述密鑰字符串中的各字符的ascii值。具體地,該計(jì)算單元1131可用于執(zhí)行圖5中所示的步驟s1051,具體的操作方法可參考步驟s1051的詳細(xì)描述。
所述更新單元1132用于對(duì)所述密鑰隨機(jī)數(shù)進(jìn)行位偏移運(yùn)算,根據(jù)位偏移運(yùn)算后的密鑰隨機(jī)數(shù)和所述密鑰字符串中的各所述字符的ascii值,得到更新的密鑰隨機(jī)數(shù)。具體地,該更新單元1132可用于執(zhí)行圖5中所示的步驟s1053,具體的操作方法可參考步驟s1053的詳細(xì)描述。
所述混淆因子生成單元1133用于結(jié)合更新前后的密鑰隨機(jī)數(shù)得到混淆因子。具體地,該混淆因子生成單元1133可用于執(zhí)行圖5中所示的步驟s1055,具體的操作方法可參考步驟s1055的詳細(xì)描述。
可選地,請(qǐng)參閱圖10,在本實(shí)施例中,所述處理模塊115包括差值計(jì)算單元1151以及判定單元1152。
所述差值計(jì)算單元1151用于將所述轉(zhuǎn)換數(shù)值分別與所述分布數(shù)組中的第i項(xiàng)組項(xiàng)的分布數(shù)值以及第i+1項(xiàng)組項(xiàng)的分布數(shù)值進(jìn)行做差處理。具體地,該差值計(jì)算單元1151可用于執(zhí)行圖6中所示的步驟s1091,具體的操作方法可參考步驟s1091的詳細(xì)描述。
所述判定單元1152用于在所述轉(zhuǎn)換數(shù)值與第i項(xiàng)組項(xiàng)的分布數(shù)值的差值大于預(yù)設(shè)值,且所述轉(zhuǎn)換數(shù)值與第i+1項(xiàng)組項(xiàng)的分布數(shù)值的差值小于所述預(yù)設(shè)值時(shí),判定所述用戶id屬于第i+1項(xiàng)組項(xiàng)。具體地,該判定單元1152可用于執(zhí)行圖6中所示的步驟s1093,具體的操作方法可參考步驟s1093的詳細(xì)描述。
綜上所述,本發(fā)明提供的一種分組方法及裝置,通過解析包括多個(gè)按預(yù)設(shè)比例設(shè)置的組項(xiàng)的配置文件以獲得密鑰字符串及密鑰隨機(jī)數(shù),并根據(jù)密鑰字符串和密鑰隨機(jī)數(shù)生成混淆因子。利用混淆因子對(duì)用戶id進(jìn)行數(shù)據(jù)轉(zhuǎn)換,并根據(jù)轉(zhuǎn)換結(jié)果將用戶id按預(yù)設(shè)比例進(jìn)行分組。本發(fā)明提供的分組方案具備數(shù)學(xué)理論依據(jù),可通過生成不同的混淆因子以將用戶id按預(yù)設(shè)比例分設(shè)于不同的組別中。通過該分組方案,可根據(jù)需求對(duì)用戶id進(jìn)行分組,以為其對(duì)應(yīng)的用戶提供不同的服務(wù)。
在本申請(qǐng)所提供的實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的實(shí)施例的裝置、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。