欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

計算機系統(tǒng)中隨機數(shù)的生成方法及裝置與流程

文檔序號:12801473閱讀:449來源:國知局
計算機系統(tǒng)中隨機數(shù)的生成方法及裝置與流程

本申請涉及計算機技術領域,尤其涉及一種計算機系統(tǒng)中隨機數(shù)的生成方法及裝置。



背景技術:

傳統(tǒng)技術中,在生成指定個數(shù)的隨機數(shù)時,往往通過調(diào)用隨機函數(shù)來隨機生成該指定個數(shù)的隨機數(shù),然而因為上述隨機數(shù)是隨機生成的,所以無法對其進行有效的控制(如,控制在某一范圍內(nèi)),由此會導致生成的指定個數(shù)的隨機數(shù)分布不均勻的問題。比如,在實現(xiàn)“紅包”的發(fā)送的場景中,支付服務端隨機生成的“紅包金額”可能會非常大,也可能會非常小(如,0.01),這會給用戶帶來較差的體驗。



技術實現(xiàn)要素:

本申請描述了一種計算機系統(tǒng)中隨機數(shù)的生成方法及裝置,可以實現(xiàn)對生成的隨機數(shù)進行有效的控制。

第一方面,提供了一種計算機系統(tǒng)中隨機數(shù)的生成方法,該方法包括:

接收第一請求,所述第一請求包括待生成的隨機數(shù)的總和以及個數(shù);

根據(jù)所述總和以及所述個數(shù),確定平均數(shù);

將待生成的所述個數(shù)的隨機數(shù)劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數(shù),當子集合包括兩個隨機數(shù)時,所述兩個隨機數(shù)之和為所述平均數(shù)的兩倍,且所述兩個隨機數(shù)之商為預設閾值;

確定所述多個子集合中每個子集合中的一個或兩個隨機數(shù),從而得到所述個數(shù)的隨機數(shù)。

第二方面,提供了一種計算機系統(tǒng)中隨機數(shù)的生成裝置,該裝置包括:

接收單元,用于接收第一請求,所述第一請求包括待生成的隨機數(shù)的總和以及個數(shù);

確定單元,用于根據(jù)所述接收單元接收的所述總和以及所述個數(shù),確定平均數(shù);

劃分單元,用于將待生成的所述個數(shù)的隨機數(shù)劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數(shù),當子集合包括兩個隨機數(shù)時,所述兩個隨機數(shù)之和為所述平均數(shù)的兩倍,且所述兩個隨機數(shù)之商為預設閾值;

所述確定單元,還用于確定所述多個子集合中每個子集合中的一個或兩個隨機數(shù),從而得到所述個數(shù)的隨機數(shù)。

本申請?zhí)峁┑挠嬎銠C系統(tǒng)中隨機數(shù)的生成方法及裝置,在接收到第一請求時,首先將待生成的隨機數(shù)劃分為多個子集合,并在子集合包括兩個隨機數(shù)時,規(guī)定兩個隨機數(shù)之和為平均數(shù)的兩倍,兩個隨機數(shù)之商為預設閾值;之后再依次確定各個子集合中包括的一個或兩個隨機數(shù),從而得到指定個數(shù)的隨機數(shù);由此實現(xiàn)了對生成的隨機數(shù)進行控制的目的。

附圖說明

為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。

圖1為本申請一種實施例提供的計算機系統(tǒng)中隨機數(shù)的生成方法流程圖;

圖2為本申請?zhí)峁┑淖蛹现须S機數(shù)的確定方法流程圖;

圖3為本申請?zhí)峁┑挠嬎銠C系統(tǒng)中隨機數(shù)的生成方法的一種應用場景的示意圖;

圖4為圖3所示的場景中一種紅包金額的生成方法流程圖;

圖5為圖3所示的場景中另一種紅包金額的生成方法流程圖;

圖6為本申請一種實施例提供的計算機系統(tǒng)中隨機數(shù)的生成裝置示意圖。

具體實施方式

下面結合附圖,對本發(fā)明的實施例進行描述。

本申請?zhí)峁┑挠嬎銠C系統(tǒng)中隨機數(shù)的生成方法及裝置適用于在待生成的隨機數(shù)的總和以及個數(shù)固定的情況下,生成隨機數(shù)的場景;尤其適用于在待生成的隨機數(shù)的總和以及個數(shù)固定的情況下,生成分布均勻的隨機數(shù)的場景。

圖1為本申請一種實施例提供的計算系統(tǒng)中隨機數(shù)的生成方法流程圖。所述方法的執(zhí)行主體可以為具有處理能力的設備:服務器或者系統(tǒng)或者裝置,如,支付系統(tǒng)的服務端,如圖1所示,所述方法具體可以包括:

步驟110,接收第一請求。

其中,該第一請求可以為任一用于指示上述服務器或者系統(tǒng)或者裝置生成隨機數(shù)的請求。該第一請求中可以包括待生成的隨機數(shù)的總和以及待生成的隨機數(shù)的個數(shù)等。

步驟120,根據(jù)總和以及個數(shù),確定平均數(shù)。

此處,平均數(shù)可以為總和除以個數(shù)得到的商。以“紅包”發(fā)送的場景為例來說,假設紅包總金額為100元,紅包數(shù)量為10個,則平均分配金額可以為100/10=10元,也即平均每個人可以分配10元。

步驟130,將待生成的個數(shù)的隨機數(shù)劃分為多個子集合。

其中,每個子集合包括一個或兩個隨機數(shù),當子集合包括兩個隨機數(shù)時,兩個隨機數(shù)之和為平均數(shù)的兩倍,且兩個隨機數(shù)之商為預設閾值。

此處,子集合的數(shù)量可以根據(jù)待生成的隨機數(shù)的個數(shù)確定,如,子集合的數(shù)量可以根據(jù)如下公式計算:int(個數(shù)/2)或者int(個數(shù)/2)+1,其中,int()是取整函數(shù),即其用于獲取一個數(shù)據(jù)的整數(shù)部分,具體地,當待生成的隨機數(shù)的個數(shù)為偶數(shù)時,可以根據(jù)公式:int(個數(shù)/2),確定子集合的數(shù)量;而當待生成的隨機數(shù)的個數(shù)為奇數(shù)時,可以根據(jù)公式int(個數(shù)/2)+1,確定子集合的數(shù)量??梢岳斫獾氖?,在上述待生成的隨機數(shù)的個數(shù)為偶數(shù)的情況下,各子集合中可以都包括兩個隨機數(shù);而在待生成的隨機數(shù)的個數(shù)為奇數(shù)的情況下,則至少有一個子集合只包括一個隨機數(shù)。

舉例來說,假設待生成的隨機數(shù)的個數(shù)為10個,也即待生成的隨機數(shù)的個數(shù)為偶數(shù),因此可以確定子集合的數(shù)量為:int(10/2)=5個。對劃分得到的5個子集合,當每個子集合均包括兩個隨機數(shù)時,可以規(guī)定該兩個隨機數(shù)的和為平均數(shù)的兩倍,且該兩個隨機數(shù)的商為預設閾值,在對兩個隨機數(shù)作出上述規(guī)定之后,該兩個隨機數(shù)就可以構成如下二元一次方程:

其中,s1和s2分別表示子集合中的兩個隨機數(shù),avg為上述平均數(shù),而gap是指上述預設閾值,其可以根據(jù)實際需求確定。

在再一個例子中,假設待生成的隨機數(shù)的個數(shù)為9個,也即待生成的隨機數(shù)的個數(shù)為奇數(shù)時,可以確定子集合的數(shù)量為:int(9/2)+1=5個。對劃分得到的5個子集合,當1個子集合包括1個隨機數(shù),而其它子集合包括兩個隨機數(shù)時,也可以規(guī)定該兩個隨機數(shù)的和為平均數(shù)的兩倍,且該兩個隨機數(shù)的商為預設閾值,在對兩個隨機數(shù)作出上述規(guī)定之后,該兩個隨機數(shù)也可以構成如上公式1所示的二元一次方程。

需要說明的是,本申請中,通過將子集合中兩個隨機數(shù)的和與商進行相應的規(guī)定,可以實現(xiàn)對同一子集合中兩個隨機數(shù)的差距進行控制的目的,且各隨機數(shù)在中間區(qū)域相對平均,也即各隨機數(shù)是在以平均數(shù)為中心劃分出的范圍之內(nèi),由此可以保證生成的隨機數(shù)分布比較均勻。

步驟140,確定多個子集合中每個子集合中的一個或兩個隨機數(shù),從而得到所述個數(shù)的隨機數(shù)。

在待生成的隨機數(shù)的個數(shù)為偶數(shù)的情況下,根據(jù)公式1可以確定出每個子集合中的兩個隨機數(shù);在確定出每個子集合中的兩個隨機數(shù)之后,就可以得到所述個數(shù)的隨機數(shù);如前述例子,在確定出5個子集合中的每個隨機數(shù)之后,就可以得到10個隨機數(shù)。需要說明的是,當某一子集合中包括1個隨機數(shù)時,則該一個隨機數(shù)可以根據(jù)平均數(shù)數(shù)確定,如,可以將平均數(shù)隨機衰減后作為上述一個隨機數(shù),或者,也可以通過其它方式確定,如,直接將平均數(shù)作為上述一個隨機數(shù),本申請對此不作限定。

需要說明的是,對于子集合中包括兩個隨機數(shù)的情況,上述只是給出了子集合中兩個隨機數(shù)的一種確定方法,在本申請的其它實施方式中,子集合中的兩個隨機數(shù)也可以通過如圖2所示的各步驟確定:

步驟210,根據(jù)待生成的隨機數(shù)的個數(shù),確定循環(huán)周期。

在一種實現(xiàn)方式中,可以根據(jù)公式2確定循環(huán)周期。

interval=count/2(公式2)

其中,interval為循環(huán)周期,count為待生成的隨機數(shù)的個數(shù)。

步驟220,根據(jù)預設閾值,確定分配因子。

在一種實現(xiàn)方式中,可以根據(jù)公式3確定分配因子。

primer=(2*gap)/(1+gap)(公式3)

其中,primer為分配因子,gap為預設閾值。

步驟230,根據(jù)平均數(shù)以及分配因子,確定最大相差倍數(shù)。

在一種實現(xiàn)方式中,可以根據(jù)公式4確定最大相差倍數(shù)。

top=math.min((avg*primer),(2*avg-1))(公式4)

其中,top為最大相差倍數(shù),avg為平均數(shù),primer為分配因子,math.min()為取最小值函數(shù),如,其會比較(avg*primer)與(2*avg-1)兩個數(shù)的大小,然后取最小的數(shù)作為最大相差倍數(shù)。

步驟240,根據(jù)最大相差倍數(shù)、平均數(shù)以及循環(huán)周期,確定步差。

在一種實現(xiàn)方式中,可以根據(jù)公式5確定步差。

stepm=(top-avg)/interval(公式5)

其中,stepm為步差,top為最大相差倍數(shù),avg為平均數(shù),interval為循環(huán)周期。

步驟250,根據(jù)步差,確定隨機數(shù)的偏移范圍。

在一種實現(xiàn)方式中,可以根據(jù)公式6確定隨機數(shù)的偏移范圍。

ri=(int)(1d/(5+random.nextint(25))*stepm)(公式6)

其中,ri為偏移范圍,stepm為步差,random.nextint(25)為隨機選取0-25之間任一整數(shù)的隨機函數(shù),根據(jù)公式6可以確定ri為[0,1/30*stepm],也即偏移范圍為[0,1/30*stepm]。

步驟260,確定在偏移范圍內(nèi)的第一偏移量。

此處的第一偏移量可以是指從偏移范圍[0,1/30*stepm]內(nèi)隨機選取的任一值。

步驟270,根據(jù)最大相差倍數(shù)、步差、當前步長以及第一偏移量,確定兩個隨機數(shù)中的第一隨機數(shù)。

在一種實現(xiàn)方式中,可以根據(jù)公式7確定兩個隨機數(shù)中的第一隨機數(shù)。

s1=top-(int)((stepgo++)*stepm)-ri(公式7)

其中,s1為兩個隨機數(shù)中的第一隨機數(shù),該第一隨機數(shù)可以是指兩個隨機數(shù)中較大的隨機數(shù);top為最大相差倍數(shù);stepgo為當前步長,當確定第一個子集合中的第一隨機數(shù)時,stepgo可以為0,之后,當確定第二個子集合中的第一隨機數(shù)時,stepgo可以為1,即每次遞增1,這樣依次類推;stepm為步差;ri為第一偏移量。

步驟280,根據(jù)平均數(shù)以及第一隨機數(shù),確定兩個隨機數(shù)中的第二隨機數(shù)。

在一種實現(xiàn)方式中,可以根據(jù)公式8確定兩個隨機數(shù)中的第二隨機數(shù)。

s2=(int)(2*avg)-s1(公式8)

其中,s2為兩個隨機數(shù)中的第二隨機數(shù),該第二隨機數(shù)可以是指兩個隨機數(shù)中較小的隨機數(shù);avg為平均數(shù);s1為兩個隨機數(shù)中的第一隨機數(shù)。

上述是在其它實施方式中,子集合中兩個隨機數(shù)的確定方法,而當子集合只包括一個隨機數(shù)時,則該一個隨機數(shù)可以通過如下步驟確定:

對平均數(shù)進行隨機衰減;

根據(jù)隨機衰減后的平均數(shù)以及預設的最小隨機數(shù),確定第二子集合中的一個隨機數(shù)。

此處的第二子集合可以是指任一只包括一個隨機數(shù)的子集合。

在一種實現(xiàn)方式中,可以根據(jù)公式9確定第二子集合中的一個隨機數(shù)。

s1=(int)math.max(min,(avg-1-random.nextint(fluctuation)))(公式9)

其中,s1為第二子集合中的一個隨機數(shù);min為預設的最小隨機數(shù),如,可以為0.01;avg為平均數(shù);fluctuation可以為預先設定的常量,該常量可以為想要對平均數(shù)衰減的值;math.max()為取最大值函數(shù),如,其會比較min與(avg-1-random.nextint(fluctuation))兩個數(shù)的大小,然后取最大的數(shù)作為第二子集合中的一個隨機數(shù)。

回到步驟140中,可以理解的是,在依照一個子集合中一個或者兩個隨機數(shù)的確定方法(如,圖2中的各步驟),確定出每個子集合中的一個或者兩個隨機數(shù)之后,就可以得到所述個數(shù)的隨機數(shù)。

可選地,在執(zhí)行步驟140之后,還可以執(zhí)行如下步驟:

步驟a:根據(jù)總和以及所述個數(shù)的隨機數(shù),確定剩余數(shù)。

需要說明的是,根據(jù)傳統(tǒng)的方法或者圖2中的各步驟得到的所述個數(shù)的隨機數(shù)之和往往并不等于總和。如在“紅包”發(fā)送的場景中,紅包數(shù)量的紅包金額之和,也即發(fā)送的“紅包”的金額之和往往并不等于紅包總金額,由此就造成了資金虧損的問題。為解決該問題,本申請中,可以根據(jù)總和以及所述個數(shù)的隨機數(shù),確定剩余數(shù),如,可以通過計算總和與所述個數(shù)的隨機數(shù)之和的差值,來確定剩余數(shù)。如前述例子,在紅包總金額為100元的情況下,假設10個紅包金額之和為90元,則剩余金額為10元。

當然,在實際應用中,剩余數(shù)也可以在執(zhí)行圖2各步驟的時候確定,由此,可以提高剩余數(shù)的確定效率。在一個例子中,可以將剩余數(shù)初始化為總和,之后,在每次確定出一個子集合中的一個或者兩個隨機數(shù)之后,就將剩余數(shù)更新為剩余數(shù)與一個隨機數(shù)的差值,或者將剩余數(shù)更新為剩余數(shù)與兩個隨機數(shù)之和的差值,可以理解的是,當所有的子集合中的隨機數(shù)確定完成之后,更新后的剩余數(shù)即為最終的剩余數(shù)。

步驟b:對剩余數(shù)進行拆分。

在一種實現(xiàn)方式中,可以將剩余數(shù)拆分為所述個數(shù)的子數(shù)據(jù)。如前述例子,在剩余金額為10元,而紅包數(shù)量為10個時,拆分后得到的子數(shù)據(jù)可以為10個1元。當然,在實際應用中,也可以將剩余數(shù)拆分為其它個數(shù)的子數(shù)據(jù),且各子數(shù)據(jù)可以不相同,本申請對此不作限定。

步驟c:將拆分后的剩余數(shù)疊加至所述個數(shù)的隨機數(shù)中,得到更新后的所述個數(shù)的隨機數(shù)。

舉例來說,假設總和:10,待生成的隨機數(shù)的個數(shù)為10個,得到的10個隨機數(shù)分別為:1.2、0.7、1.1、0.8、1.3、0.6、1.5、0.4、1.0和0.9,則剩余數(shù)可以為:0.5;將剩余數(shù)0.5拆分為10個0.05;則更新后的10個隨機數(shù)可以為:1.25、0.75、1.15、0.85、1.35、0.65、1.55、0.45、1.05和0.95。

在“紅包”發(fā)送的場景下,通過將拆分后的剩余金額疊加至紅包數(shù)量的紅包金額中,可以避免資金損失。

可選地,在執(zhí)行步驟140之后,或者在執(zhí)行步驟c之后,還可以執(zhí)行如下步驟:

步驟x:對所述個數(shù)的隨機數(shù)進行重排序。

此處,可以是按照任意的順序對所述個數(shù)的隨機數(shù)進行重排序,以避免各隨機數(shù)按大小順序存儲;此外,還可以保證在待生成的隨機數(shù)的總和以及個數(shù)相同的情況下,連續(xù)兩次以上劃分的所述個數(shù)的隨機數(shù)的順序不一致。

步驟y:將重排序后的所述個數(shù)的隨機數(shù)存儲到列表中。

當然,在實際用中,也可以將重排序后的所述個數(shù)的隨機數(shù)數(shù)存儲到其它形式的存儲單元中,本申請對此不作限定。

需要說明的是,上述步驟x和步驟y中的所述個數(shù)的隨機數(shù)也可以是指疊加了拆分后的剩余數(shù)的所述個數(shù)的隨機數(shù)。

需要說明的是,本申請?zhí)峁┑挠嬎銠C系統(tǒng)中隨機數(shù)的生成方法可以應用于如圖3所示的“紅包”的發(fā)送的場景,圖3中,包括一個發(fā)送方客戶端以及多個接收方客戶端,發(fā)送方客戶端用于發(fā)送“紅包”領取通知,接收方客戶端用于根據(jù)發(fā)送方客戶端發(fā)送的“紅包”領取通知,執(zhí)行相應的“紅包”領取操作。需要說明的是,發(fā)送方客戶端發(fā)送“紅包”領取通知的方式有多種,以發(fā)送方客戶端為支付寶客戶端為例來說,支付寶客戶端發(fā)送“紅包”領取通知的方式可以包括兩種:第一種,支付寶客戶端可以在群組中發(fā)送“紅包”領取通知,該群組可以通過以下步驟建立:通訊錄->群聊->選擇群類型(如,娛樂群)->選擇用戶;第二種,發(fā)送方用戶在“支付寶”應用界面中,通過觸發(fā)“紅包”文字或相應的“紅包”圖案,即可轉入紅包生成界面;在紅包生成界面,發(fā)送方用戶輸入口令,并在選擇的群類型中輸入“總金額”以及“紅包個數(shù)”,之后點擊“發(fā)紅包”后,即可完成“紅包”領取通知的發(fā)送??梢岳斫獾氖牵ㄟ^上述兩種方式發(fā)送的“紅包”領取通知可以包括“總金額”和“紅包個數(shù)”等信息。

圖3中,在發(fā)送方客戶端發(fā)送“紅包”領取通知之后,服務端就可以接收到第一請求,該第一請求中可以包括紅包總金額以及待發(fā)送的紅包數(shù)量,之后服務端可以從紅包總金額中劃分出紅包數(shù)量的紅包金額;當服務端接收到接收方客戶端發(fā)送的“紅包”領取請求時,也即在接收方用戶領取紅包時,將其中的一個紅包金額分配給接收方客戶端。

然而,在服務端劃分紅包數(shù)量的紅包金額的過程中,通常隨機生成每個紅包金額,由此服務端隨機生成的紅包金額可能會非常大,也可能會非常小(如,0.01),也即具有紅包金額不可控的問題。

當本申請的計算機系統(tǒng)中隨機數(shù)的生成方法應用于圖3所示的場景中時,可以解決上述紅包金額不可控的問題。具體地,當本申請的計算機系統(tǒng)中隨機數(shù)的生成方法應用于圖3所示的場景中時,待生成的隨機數(shù)的總和相當于紅包總金額,待生成的隨機數(shù)的個數(shù)相當于待發(fā)送的紅包數(shù)量,隨機數(shù)相當于紅包金額,而隨機數(shù)的生成方法可以為紅包金額的生成方法,其中,圖4提供了一種紅包金額的生成方法,圖4中,該方法具體可以包括如下步驟:

步驟410,服務端接收發(fā)送方客戶端發(fā)送的第一請求。

該第一請求可以包括紅包總金額以及待發(fā)送的紅包數(shù)量。

步驟420,根據(jù)紅包總金額和紅包數(shù)量,確定平均分配金額。

此處,平均分配金額可以為紅包總金額除以紅包數(shù)量得到的商。舉例來說,假設紅包總金額為100元,紅包數(shù)量為10個,則平均分配金額可以為100/10=10元,也即平均每個人可以分配10元。

步驟430,將待生成的紅包數(shù)量的紅包金額劃分為多個紅包金額子集合。

其中,每個紅包金額子集合包括一個或兩個紅包金額,當紅包金額子集合包括兩個紅包金額時,兩個紅包金額之和為平均分配金額的兩倍,且兩個紅包金額之商為預設閾值。

此處,紅包金額子集合的數(shù)量可以根據(jù)待發(fā)送的紅包數(shù)量確定,如,紅包金額子集合的數(shù)量可以根據(jù)如下公式計算:int(紅包數(shù)量/2)或者int(紅包數(shù)量/2)+1,其中,int()是取整函數(shù),即其用于獲取一個數(shù)據(jù)的整數(shù)部分,具體地,當紅包數(shù)量為偶數(shù)時,可以根據(jù)公式:int(紅包數(shù)量/2),確定紅包金額子集合的數(shù)量;而當紅包數(shù)量為奇數(shù)時,可以根據(jù)公式int(紅包數(shù)量/2)+1,確定紅包金額子集合的數(shù)量??梢岳斫獾氖牵谏鲜黾t包數(shù)量為偶數(shù)的情況下,各紅包金額子集合中可以都包括兩個紅包金額;而在紅包數(shù)量為奇數(shù)的情況下,則至少有一個紅包金額子集合只包括一個紅包金額。

假設待發(fā)送的紅包數(shù)量為10個,也即紅包數(shù)量為偶數(shù),因此可以確定紅包金額子集合的數(shù)量為:int(10/2)=5個。對劃分得到的5個紅包金額子集合,當每個紅包金額子集合均包括兩個紅包金額時,可以規(guī)定該兩個紅包金額的和為平均分配金額的兩倍,且該兩個紅包金額的商為預設閾值,在對兩個紅包金額作出上述規(guī)定之后,該兩個紅包金額就可以構成如公式1所示的二元一次方程。

而假設待發(fā)送的紅包數(shù)量為9個,也即紅包數(shù)量為奇數(shù)時,可以確定紅包金額子集合的數(shù)量為:int(9/2)+1=5個。對劃分得到的5個紅包金額子集合,當1個紅包金額子集合包括1個紅包金額,而其它紅包金額子集合包括兩個紅包金額時,也可以規(guī)定該兩個紅包金額的和為平均分配金額的兩倍,且該兩個紅包金額的商為預設閾值,在對兩個紅包金額作出上述規(guī)定之后,該兩個紅包金額也可以構成如上公式1所示的二元一次方程。

需要說明的是,本申請中,通過將紅包金額子集合中兩個紅包金額的和與商進行相應的規(guī)定,可以實現(xiàn)對同一紅包金額子集合中兩個紅包金額的差值進行控制的目的,且各紅包金額在中間區(qū)域相對平均,也即各紅包金額是在以平均分配金額為中心劃分出的范圍之內(nèi),由此可以保證各接收方客戶端分配的紅包金額相對平均,也即可以保證接收方用戶分配的“紅包”金額相對平均,這可以提升用戶的體驗。

步驟440,確定多個紅包金額子集合中每個紅包金額子集合中的一個或兩個紅包金額,從而得到紅包數(shù)量的紅包金額。

在紅包數(shù)量為偶數(shù)的情況下,根據(jù)公式1可以確定出每個紅包金額子集合中的兩個紅包金額;在確定出每個紅包金額子集合中的兩個紅包金額之后,就可以得到紅包數(shù)量的紅包金額;如前述例子,在確定出5個紅包金額子集合中的每個紅包金額之后,就可以得到10個紅包金額。需要說明的是,當某一紅包金額子集合中包括1個紅包金額時,則該一個紅包金額可以根據(jù)平均分配金額確定,如,可以將平均分配金額隨機衰減后作為上述一個紅包金額。此處,在紅包數(shù)量為奇數(shù)的情況下,通過將平均分配金額隨機衰減后賦予最后一個紅包金額,可以避免最后一個紅包金額固定的問題,由此可以避免不法分子利用這種規(guī)律進行不法行為的問題。

需要說明的是,對于紅包金額子集合中包括兩個紅包金額的情況,上述只是給出了兩個紅包金額的一種確定方法,在本申請的其它實施方式中,紅包金額子集合中的兩個紅包金額也可以通過如圖2所示的各步驟確定;即只需將圖2所示的各步驟中的平均數(shù)替換為平均分配金額,將隨機數(shù)替換為紅包金額即可。

服務端在依照一個紅包金額子集合中一個或者兩個紅包金額的確定方法(如,圖2中的各步驟),確定出每個紅包金額子集合中的一個或者兩個紅包金額之后,就可以得到紅包數(shù)量的紅包金額。

可選地,在執(zhí)行步驟440之后,還可以執(zhí)行如下步驟:

步驟a:根據(jù)紅包總金額以及紅包數(shù)量的紅包金額,確定剩余金額。

紅包數(shù)量的紅包金額之和,也即發(fā)送的“紅包”的金額之和往往并不等于紅包總金額,由此就造成了資金虧損的問題。為解決該問題,本申請中,可以根據(jù)紅包總金額以及紅包數(shù)量的紅包金額,確定剩余金額,如,可以通過計算紅包總金額與紅包數(shù)量的紅包金額之和的差值,來確定剩余金額。如前述例子,在紅包總金額為100元的情況下,假設10個紅包金額之和為90元,則剩余金額為10元。

當然,在實際應用中,剩余金額也可以在執(zhí)行圖2各步驟的時候確定,由此,可以提高剩余金額的確定效率。在一個例子中,可以剩余金額初始化為紅包總金額,之后,在每次確定出一個紅包金額子集合中的一個或者兩個紅包金額之后,就將剩余金額更新為剩余金額與一個紅包金額的差值,或者將剩余金額更新為剩余金額與兩個紅包金額之后的差值,可以理解的是,當所有的紅包金額子集合中的紅包金額確定完成之后,更新后的剩余金額即為最終的剩余金額。

步驟b:對剩余金額進行拆分。

在一種實現(xiàn)方式中,可以將剩余金額拆分為紅包數(shù)量的子數(shù)據(jù)。如前述例子,在剩余金額為10元,而紅包數(shù)量為10個時,拆分后得到的子數(shù)據(jù)可以為10個1元。當然,在實際應用中,也可以將剩余金額拆分為其它個數(shù)的子數(shù)據(jù),且各子數(shù)據(jù)可以不相同,本申請對此不作限定。

步驟c:將拆分后的剩余金額疊加至紅包數(shù)量的紅包金額中,得到更新后的紅包數(shù)量的紅包金額。

舉例來說,假設紅包總金額為:10元,紅包數(shù)量為10個,得到的10個紅包金額分別為:1.2、0.7、1.1、0.8、1.3、0.6、1.5、0.4、1.0和0.9,則剩余金額可以為:0.5;將剩余金額0.5拆分為10個0.05;則更新后的10個紅包金額可以為:1.25、0.75、1.15、0.85、1.35、0.65、1.55、0.45、1.05和0.95。

通過將拆分后的剩余金額疊加至紅包數(shù)量的紅包金額中,可以避免資金損失。

可選地,在執(zhí)行步驟440之后,或者在執(zhí)行步驟c之后,還可以執(zhí)行如下步驟:

步驟x:對紅包數(shù)量的紅包金額進行重排序。

此處,可以是按照任意的順序對紅包數(shù)量的紅包金額進行重排序,以避免各紅包金額按大小順序存儲;此外,還可以保證在紅包總金額和紅包數(shù)量相同的情況下,連續(xù)兩次以上劃分的紅包數(shù)量的紅包金額的順序不一致。

步驟y:將重排序后的紅包數(shù)量的紅包金額存儲到列表中。

當然,在實際用中,也可以將重排序后的紅包數(shù)量的紅包金額存儲到其它形式的存儲單元中,本申請對此不作限定。

需要說明的是,上述步驟x和步驟y中的紅包數(shù)量的紅包金額也可以是指更新后的紅包數(shù)量的紅包金額。

步驟450,接收接收方客戶端發(fā)送的第二請求。

該第二請求可以包括接收方用戶的標識(例如,接收方用戶的賬號信息等)。

步驟460,根據(jù)第二請求,將紅包數(shù)量的紅包金額中目標金額分配至接收方客戶端。

此處的目標金額可以是指紅包數(shù)量的紅包金額中的任一紅包金額,或者也可以是指更新后的紅包數(shù)量的紅包金額中任一紅包金額。

如,服務端在接收到第二請求之后,可以從列表中讀取目標金額;之后將目標金額分配至接收方客戶端。

為了更清楚的說明本申請?zhí)峁┑挠嬎銠C系統(tǒng)中隨機數(shù)的生成方法在圖3所示的“紅包”的發(fā)送的場景中的應用,本申請給出了如下具體的實施方式。

圖5為圖3所示的場景中另一種紅包金額的生成方法流程圖。如圖5所示,所述方法具體可以包括:

步驟510,接收發(fā)送方客戶端發(fā)送的第一請求。

可選地,在接收第一請求之前,可以預先設定最小分配金額(如,0.01元)。

該第一請求可以包括紅包總金額以及紅包數(shù)量(count)。

步驟520,判斷紅包數(shù)量(count)是否為1,若是,則執(zhí)行步驟530;若否,則執(zhí)行步驟540。

步驟530,將紅包總金額放入列表。

步驟540,判斷紅包總金額是否為紅包數(shù)量*預設的最小分配金額,若是,則執(zhí)行步驟550;若否,則執(zhí)行步驟560。

步驟550,采用平均分配算法將紅包總金額劃分為紅包數(shù)量的最小分配金額,并將其放入列表。

步驟560,計算平均分配金額、最大相差倍數(shù)、步差以及紅包金額的偏移范圍,并將剩余金額初始化為紅包總金額。

此處,平均分配金額的計算方法可參照步驟120或者420,最大相差倍數(shù)、步差以及紅包金額的偏移范圍可以參照步驟210-步驟250,在此不復贅述。

步驟570,判斷是否已確定出紅包數(shù)量的紅包金額,若否,則執(zhí)行步驟580,若是,則執(zhí)行步驟5160。

步驟580,判斷當前確定的紅包金額是否是最后一個紅包金額,若是,則執(zhí)行步驟590;若否,則執(zhí)行步驟5120。

步驟590,對平均分配金額進行隨機衰減。

步驟5100,根據(jù)隨機衰減后的平均分配金額以及預設的最小分配金額,確定最后一個紅包金額。

步驟5110,將最后一個紅包金額加入列表中,并將剩余金額更新為剩余金額與最后一個紅包金額的差值。

步驟5120,從步驟560中計算的偏移范圍之內(nèi)隨機選取任一值作為當前的偏移量。

步驟5130,根據(jù)步驟560中計算的最大相差倍數(shù)、步差、第一偏移量以及當前步長,計算出一個紅包金額。

此處,一個紅包金額的計算方法可以參照步驟370。

步驟5140,根據(jù)平均分配金額以及一個紅包金額,計算另一紅包金額。

此處,另一紅包金額的計算方法可以參照步驟380。

步驟5150,將剩余金額更新為剩余金額與上述兩個紅包金額之和的差值,并將一個紅包金額與另一紅包金額加入列表。

步驟5160,判斷剩余金額是否大于0,若是,則執(zhí)行步驟5170;若否,則執(zhí)行步驟5180。

步驟5170,對剩余金額進行拆分;將拆分后的剩余金額疊加至紅包數(shù)量的紅包金額中,得到更新后的紅包數(shù)量的紅包金額。

此處,剩余金額的拆分方法以及疊加拆分后的剩余金額的方法可以參照步驟b-步驟c或者步驟b-步驟c。

步驟5180,將紅包數(shù)量的紅包金額或者更新后的紅包數(shù)量的紅包金額進行重排序。

步驟5190,接收接收方客戶端發(fā)送的第二請求。

步驟5200,將紅包數(shù)量的紅包金額或者更新后的紅包數(shù)量的紅包金額中的目標金額分配至接收方客戶端。

本申請的上述實施例具有如下技術效果:

1)通過對紅包金額子集合中兩個紅包金額的和與商的限定,可以實現(xiàn)對劃分的紅包金額的控制。

2)通過對剩余金額進行拆分,并將拆分后的剩余金額疊加至紅包數(shù)量的紅包金額中,可以保障不會出現(xiàn)資損;此外,還可以保障分配更均勻。

3)通過對紅包數(shù)量的紅包金額進行重排序,可以避免紅包數(shù)量的紅包金額按大小順序存儲。

4)在紅包數(shù)量為奇數(shù)的情況下,通過將平均分配金額隨機衰減后賦予最后一個紅包金額,可以避免最后一個紅包金額固定的問題,由此可以避免不法分子利用這種規(guī)律進行不法行為的問題。

當然,本申請?zhí)岢龅挠嬎銠C系統(tǒng)中隨機數(shù)的生成方法并不局限于“紅包”發(fā)送的場景,也可以應用于其它的場景,如商戶活動金額分配,本申請對此不作限定。

與上述計算機系統(tǒng)中隨機數(shù)的生成方法對應地,本申請實施例還提供的一種計算機系統(tǒng)中隨機數(shù)的生成裝置,如圖6所示,該裝置包括:

接收單元601,用于接收第一請求,該第一請求包括待生成的隨機數(shù)的總和以及個數(shù)。

確定單元602,用于根據(jù)接收單元601接收的總和以及個數(shù),確定平均數(shù)。

劃分單元603,用于將待生成的個數(shù)的隨機數(shù)劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數(shù),當子集合包括兩個隨機數(shù)時,兩個隨機數(shù)之和為平均數(shù)的兩倍,且兩個隨機數(shù)之商為預設閾值。

確定單元602,還用于確定多個子集合中每個子集合中的一個或兩個隨機數(shù),從而得到所述個數(shù)的隨機數(shù)。

可選地,確定單元602,還用于根據(jù)個數(shù),確定循環(huán)周期;

根據(jù)預設閾值,確定分配因子;

根據(jù)平均數(shù)以及分配因子,確定最大相差倍數(shù);

根據(jù)最大相差倍數(shù)、平均數(shù)以及循環(huán)周期,確定步差;

根據(jù)步差,確定隨機數(shù)的偏移范圍;

確定單元602具體用于:

確定在偏移范圍內(nèi)的第一偏移量;

根據(jù)最大相差倍數(shù)、步差、當前步長以及第一偏移量,確定兩個隨機數(shù)中的第一隨機數(shù);

根據(jù)平均數(shù)以及第一隨機數(shù),確定兩個隨機數(shù)中的第二隨機數(shù)。

可選地,確定單元602,還用于對平均數(shù)進行隨機衰減;

根據(jù)隨機衰減后的平均數(shù)以及預設的最小隨機數(shù),確定第二子集合中的一個隨機數(shù)。

可選地,所述裝置還包括:拆分單元603和疊加單元604。

確定單元602,還用于根據(jù)總和以及所述個數(shù)的隨機數(shù),確定剩余數(shù);

拆分單元603,用于對確定單元602確定的剩余數(shù)進行拆分;

疊加單元604,用于將拆分單元603拆分后的剩余數(shù)疊加至所述個數(shù)的隨機數(shù)中,得到更新后的所述個數(shù)的隨機數(shù)。

可選地,所述裝置還包括:

排序單元605,用于對所述個數(shù)的隨機數(shù)進行重排序;

存儲單元606,用于將排序單元605重排序后的所述個數(shù)的隨機數(shù)存儲到列表中。

本申請實施例裝置的各功能模塊的功能,可以通過上述方法實施例的各步驟來實現(xiàn),因此,本申請?zhí)峁┑难b置的具體工作過程,在此不復贅述。

本申請實施例提供的計算機系統(tǒng)中隨機數(shù)的生成裝置,接收單元601接收第一請求,該第一請求包括待生成的隨機數(shù)的總和以及個數(shù);確定單元602根據(jù)總和以及個數(shù),確定平均數(shù);劃分單元603將待生成的個數(shù)的隨機數(shù)劃分為多個子集合;確定單元602確定多個子集合中每個子集合中的一個或兩個隨機數(shù),從而得到所述個數(shù)的隨機數(shù)。由此實現(xiàn)了對生成的隨機數(shù)進行控制的目的。

本領域技術人員應該可以意識到,在上述一個或多個示例中,本發(fā)明所描述的功能可以用硬件、軟件、固件或它們的任意組合來實現(xiàn)。當使用軟件實現(xiàn)時,可以將這些功能存儲在計算機可讀介質中或者作為計算機可讀介質上的一個或多個指令或代碼進行傳輸。

以上所述的具體實施方式,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本發(fā)明的保護范圍之內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
灯塔市| 泰安市| 滨州市| 凯里市| 剑阁县| 梨树县| 霍州市| 长岛县| 永定县| 邳州市| 黑水县| 鄢陵县| 建昌县| 横山县| 鱼台县| 丹凤县| 吉安市| 鸡泽县| 信宜市| 长丰县| 田阳县| 怀集县| 桃源县| 濉溪县| 墨脱县| 新竹市| 和静县| 和顺县| 永新县| 平谷区| 西吉县| 宣恩县| 晋城| 武宣县| 石台县| 石家庄市| 邵阳市| 威海市| 上犹县| 内丘县| 贵南县|