TWI695317B - 電腦系統中隨機數的產生方法及裝置 - Google Patents

電腦系統中隨機數的產生方法及裝置 Download PDF

Info

Publication number
TWI695317B
TWI695317B TW106120042A TW106120042A TWI695317B TW I695317 B TWI695317 B TW I695317B TW 106120042 A TW106120042 A TW 106120042A TW 106120042 A TW106120042 A TW 106120042A TW I695317 B TWI695317 B TW I695317B
Authority
TW
Taiwan
Prior art keywords
random
random numbers
amount
red
numbers
Prior art date
Application number
TW106120042A
Other languages
English (en)
Other versions
TW201807566A (zh
Inventor
張賀
Original Assignee
香港商阿里巴巴集團服務有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 香港商阿里巴巴集團服務有限公司 filed Critical 香港商阿里巴巴集團服務有限公司
Publication of TW201807566A publication Critical patent/TW201807566A/zh
Application granted granted Critical
Publication of TWI695317B publication Critical patent/TWI695317B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators

Landscapes

  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本發明涉及電腦技術領域,尤其涉及一種電腦系統中隨機數的產生方法及裝置,在一種電腦系統中隨機數的產生方法中,在接收到第一請求時,首先將待產生的隨機數劃分為多個子集合,並在子集合包括兩個隨機數時,規定兩個隨機數之和為平均數的兩倍,兩個隨機數之商為預設閾值;之後再依次確定各個子集合中包括的一個或兩個隨機數,從而得到指定個數的隨機數;由此實現了對產生的隨機數進行控制的目的。

Description

電腦系統中隨機數的產生方法及裝置
本發明涉及電腦技術領域,尤其涉及一種電腦系統中隨機數的產生方法及裝置。
傳統技術中,在產生指定個數的隨機數時,往往通過調用隨機函數來隨機產生該指定個數的隨機數,然而因為上述隨機數是隨機產生的,所以無法對其進行有效的控制(如,控制在某一範圍內),由此會導致產生的指定個數的隨機數分佈不均勻的問題。比如,在實現“紅包”的發送的場景中,支付服務端隨機產生的“紅包金額”可能會非常大,也可能會非常小(如,0.01),這會給用戶帶來較差的體驗。
本發明描述了一種電腦系統中隨機數的產生方法及裝置,可以實現對產生的隨機數進行有效的控制。
第一方面,提供了一種電腦系統中隨機數的產生方法,該方法包括:接收第一請求,所述第一請求包括待產生的隨機數的 總和以及個數;根據所述總和以及所述個數,確定平均數;將待產生的所述個數的隨機數劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數,當子集合包括兩個隨機數時,所述兩個隨機數之和為所述平均數的兩倍,且所述兩個隨機數之商為預設閾值;確定所述多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數。
第二方面,提供了一種電腦系統中隨機數的產生裝置,該裝置包括:接收單元,用於接收第一請求,所述第一請求包括待產生的隨機數的總和以及個數;確定單元,用於根據所述接收單元接收的所述總和以及所述個數,確定平均數;劃分單元,用於將待產生的所述個數的隨機數劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數,當子集合包括兩個隨機數時,所述兩個隨機數之和為所述平均數的兩倍,且所述兩個隨機數之商為預設閾值;所述確定單元,還用於確定所述多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數。
本發明提供的電腦系統中隨機數的產生方法及裝置,在接收到第一請求時,首先將待產生的隨機數劃分為多個子集合,並在子集合包括兩個隨機數時,規定兩個隨機數 之和為平均數的兩倍,兩個隨機數之商為預設閾值;之後再依次確定各個子集合中包括的一個或兩個隨機數,從而得到指定個數的隨機數;由此實現了對產生的隨機數進行控制的目的。
601‧‧‧接收單元
602‧‧‧確定單元
603‧‧‧劃分單元
為了更清楚地說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些圖式獲得其它的圖式。
圖1為本發明一種實施例提供的電腦系統中隨機數的產生方法流程圖;圖2為本發明提供的子集合中隨機數的確定方法流程圖;圖3為本發明提供的電腦系統中隨機數的產生方法的一種應用場景的示意圖;圖4為圖3所示的場景中一種紅包金額的產生方法流程圖;圖5為圖3所示的場景中另一種紅包金額的產生方法流程圖;圖6為本發明一種實施例提供的電腦系統中隨機數的產生裝置示意圖。
下面結合圖式,對本發明的實施例進行描述。
本發明提供的電腦系統中隨機數的產生方法及裝置適用於在待產生的隨機數的總和以及個數固定的情況下,產生隨機數的場景;尤其適用於在待產生的隨機數的總和以及個數固定的情況下,產生分佈均勻的隨機數的場景。
圖1為本發明一種實施例提供的計算系統中隨機數的產生方法流程圖。所述方法的執行主體可以為具有處理能力的設備:伺服器或者系統或者裝置,如,支付系統的服務端,如圖1所示,所述方法具體可以包括:
步驟110,接收第一請求。
其中,該第一請求可以為任一用於指示上述伺服器或者系統或者裝置產生隨機數的請求。該第一請求中可以包括待產生的隨機數的總和以及待產生的隨機數的個數等。
步驟120,根據總和以及個數,確定平均數。
此處,平均數可以為總和除以個數得到的商。以“紅包”發送的場景為例來說,假設紅包總金額為100元,紅包數量為10個,則平均分配金額可以為100/10=10元,也即平均每個人可以分配10元。
步驟130,將待產生的個數的隨機數劃分為多個子集合。
其中,每個子集合包括一個或兩個隨機數,當子集合包括兩個隨機數時,兩個隨機數之和為平均數的兩倍,且兩個隨機數之商為預設閾值。
此處,子集合的數量可以根據待產生的隨機數的個數確定,如,子集合的數量可以根據如下公式計算:INT(個數/2)或者INT(個數/2)+1,其中,INT( )是取整函數,即其用於獲取一個數據的整數部分,具體地,當待產生的隨機數的個數為偶數時,可以根據公式:INT(個數/2),確定子集合的數量;而當待產生的隨機數的個數為奇數時,可以根據公式INT(個數/2)+1,確定子集合的數量。可以理解的是,在上述待產生的隨機數的個數為偶數的情況下,各子集合中可以都包括兩個隨機數;而在待產生的隨機數的個數為奇數的情況下,則至少有一個子集合只包括一個隨機數。
舉例來說,假設待產生的隨機數的個數為10個,也即待產生的隨機數的個數為偶數,因此可以確定子集合的數量為:INT(10/2)=5個。對劃分得到的5個子集合,當每個子集合均包括兩個隨機數時,可以規定該兩個隨機數的和為平均數的兩倍,且該兩個隨機數的商為預設閾值,在對兩個隨機數作出上述規定之後,該兩個隨機數就可以構成如下二元一次方程:
Figure 106120042-A0202-12-0005-1
其中,S1和S2分別表示子集合中的兩個隨機數,AVG為上述平均數,而GAP是指上述預設閾值,其可以根據實際需求確定。
在再一個例子中,假設待產生的隨機數的個數為9個,也即待產生的隨機數的個數為奇數時,可以確定子集合的數量為:INT(9/2)+1=5個。對劃分得到的5個子集合,當1個子集合包括1個隨機數,而其它子集合包括兩個隨機數時,也可以規定該兩個隨機數的和為平均數的兩倍,且該兩個隨機數的商為預設閾值,在對兩個隨機數作出上述規定之後,該兩個隨機數也可以構成如上公式1所示的二元一次方程。
需要說明的是,本發明中,通過將子集合中兩個隨機數的和與商進行相應的規定,可以實現對同一子集合中兩個隨機數的差距進行控制的目的,且各隨機數在中間區域相對平均,也即各隨機數是在以平均數為中心劃分出的範圍之內,由此可以保證產生的隨機數分佈比較均勻。
步驟140,確定多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數。
在待產生的隨機數的個數為偶數的情況下,根據公式1可以確定出每個子集合中的兩個隨機數;在確定出每個子集合中的兩個隨機數之後,就可以得到所述個數的隨機數;如前述例子,在確定出5個子集合中的每個隨機數之後,就可以得到10個隨機數。需要說明的是,當某一子集合中包括1個隨機數時,則該一個隨機數可以根據平均數數確定,如,可以將平均數隨機衰減後作為上述一個隨機數,或者,也可以通過其它方式確定,如,直接將平均數作為上述一個隨機數,本發明對此不作限定。
需要說明的是,對於子集合中包括兩個隨機數的情況,上述只是給出了子集合中兩個隨機數的一種確定方法,在本發明的其它實施方式中,子集合中的兩個隨機數也可以通過如圖2所示的各步驟確定:
步驟210,根據待產生的隨機數的個數,確定循環週期。
在一種實現方式中,可以根據公式2確定循環週期。
Interval=count/2 (公式2)
其中,Interval為循環週期,count為待產生的隨機數的個數。
步驟220,根據預設閾值,確定分配因子。
在一種實現方式中,可以根據公式3確定分配因子。
primer=(2*GAP)/(1+GAP) (公式3)
其中,primer為分配因子,GAP為預設閾值。
步驟230,根據平均數以及分配因子,確定最大相差倍數。
在一種實現方式中,可以根據公式4確定最大相差倍數。
top=Math.min((AVG*primer),(2*AVG-1)) (公式4)
其中,top為最大相差倍數,AVG為平均數,primer為分配因子,Math.min( )為取最小值函數,如,其會比較(AVG*primer)與(2*AVG-1)兩個數的大小,然後取最小的數作為最大相差倍數。
步驟240,根據最大相差倍數、平均數以及循環週期,確定步差。
在一種實現方式中,可以根據公式5確定步差。
stepM=(top-AVG)/Interval (公式5)
其中,stepM為步差,top為最大相差倍數,AVG為平均數,Interval為循環週期。
步驟250,根據步差,確定隨機數的偏移範圍。
在一種實現方式中,可以根據公式6確定隨機數的偏移範圍。
Ri=(int)(1d/(5+random.nextInt(25))*stepM) (公式6)
其中,Ri為偏移範圍,stepM為步差,random.nextInt(25)為隨機選取0-25之間任一整數的隨機函數,根據公式6可以確定Ri為[0,1/30*stepM],也即偏移範圍為[0,1/30*stepM]。
步驟260,確定在偏移範圍內的第一偏移量。
此處的第一偏移量可以是指從偏移範圍[0,1/30*stepM] 內隨機選取的任一值。
步驟270,根據最大相差倍數、步差、當前步長以及第一偏移量,確定兩個隨機數中的第一隨機數。
在一種實現方式中,可以根據公式7確定兩個隨機數中的第一隨機數。
S 1=top-(int)((stepGo++)*stepM)-ri (公式7)
其中,S1為兩個隨機數中的第一隨機數,該第一隨機數可以是指兩個隨機數中較大的隨機數;top為最大相差倍數;stepGo為當前步長,當確定第一個子集合中的第一隨機數時,stepGo可以為0,之後,當確定第二個子集合中的第一隨機數時,stepGo可以為1,即每次遞增1,這樣依次類推;stepM為步差;ri為第一偏移量。
步驟280,根據平均數以及第一隨機數,確定兩個隨機數中的第二隨機數。
在一種實現方式中,可以根據公式8確定兩個隨機數中的第二隨機數。
S 2=(int)(2*AVG)-S 1 (公式8)
其中,S2為兩個隨機數中的第二隨機數,該第二隨機數可以是指兩個隨機數中較小的隨機數;AVG為平均數;S1為兩個隨機數中的第一隨機數。
上述是在其它實施方式中,子集合中兩個隨機數的確定方法,而當子集合只包括一個隨機數時,則該一個隨機數可以通過如下步驟確定:對平均數進行隨機衰減;根據隨機衰減後的平均數以及預設的最小隨機數,確定第二子集合中的一個隨機數。
此處的第二子集合可以是指任一隻包括一個隨機數的子集合。
在一種實現方式中,可以根據公式9確定第二子集合中的一個隨機數。
S 1=(int)Math.max(MIN,(AVG-1-random.nextInt(FLUCTUATION))) (公式9)
其中,S1為第二子集合中的一個隨機數;MIN為預設的最小隨機數,如,可以為0.01;AVG為平均數;FLUCTUATION可以為預先設定的常量,該常量可以為想要對平均數衰減的值;Math.max( )為取最大值函數,如,其會比較MIN與(AVG-1-random.nextInt(FLUCTUATION))兩個數的大小,然後取最大的數作為第二子集合中的一個隨機數。
回到步驟140中,可以理解的是,在依照一個子集合中一個或者兩個隨機數的確定方法(如,圖2中的各步驟),確定出每個子集合中的一個或者兩個隨機數之後,就可以得到所述個數的隨機數。
可選地,在執行步驟140之後,還可以執行如下步 驟:
步驟A:根據總和以及所述個數的隨機數,確定剩餘數。
需要說明的是,根據傳統的方法或者圖2中的各步驟得到的所述個數的隨機數之和往往並不等於總和。如在“紅包”發送的場景中,紅包數量的紅包金額之和,也即發送的“紅包”的金額之和往往並不等於紅包總金額,由此就造成了資金虧損的問題。為解決該問題,本發明中,可以根據總和以及所述個數的隨機數,確定剩餘數,如,可以通過計算總和與所述個數的隨機數之和的差值,來確定剩餘數。如前述例子,在紅包總金額為100元的情況下,假設10個紅包金額之和為90元,則剩餘金額為10元。
當然,在實際應用中,剩餘數也可以在執行圖2各步驟的時候確定,由此,可以提高剩餘數的確定效率。在一個例子中,可以將剩餘數初始化為總和,之後,在每次確定出一個子集合中的一個或者兩個隨機數之後,就將剩餘數更新為剩餘數與一個隨機數的差值,或者將剩餘數更新為剩餘數與兩個隨機數之和的差值,可以理解的是,當所有的子集合中的隨機數確定完成之後,更新後的剩餘數即為最終的剩餘數。
步驟B:對剩餘數進行拆分。
在一種實現方式中,可以將剩餘數拆分為所述個數的子數據。如前述例子,在剩餘金額為10元,而紅包數量為10個時,拆分後得到的子數據可以為10個1元。當 然,在實際應用中,也可以將剩餘數拆分為其它個數的子數據,且各子數據可以不相同,本發明對此不作限定。
步驟C:將拆分後的剩餘數疊加至所述個數的隨機數中,得到更新後的所述個數的隨機數。
舉例來說,假設總和:10,待產生的隨機數的個數為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。
在“紅包”發送的場景下,通過將拆分後的剩餘金額疊加至紅包數量的紅包金額中,可以避免資金損失。
可選地,在執行步驟140之後,或者在執行步驟C之後,還可以執行如下步驟:
步驟X:對所述個數的隨機數進行重排序。
此處,可以是按照任意的順序對所述個數的隨機數進行重排序,以避免各隨機數按大小順序儲存;此外,還可以保證在待產生的隨機數的總和以及個數相同的情況下,連續兩次以上劃分的所述個數的隨機數的順序不一致。
步驟Y:將重排序後的所述個數的隨機數儲存到列表中。
當然,在實際用中,也可以將重排序後的所述個數的隨機數數儲存到其它形式的儲存單元中,本發明對此不作限定。
需要說明的是,上述步驟X和步驟Y中的所述個數的隨機數也可以是指疊加了拆分後的剩餘數的所述個數的隨機數。
需要說明的是,本發明提供的電腦系統中隨機數的產生方法可以應用於如圖3所示的“紅包”的發送的場景,圖3中,包括一個發送方客戶端以及多個接收方客戶端,發送方客戶端用於發送“紅包”領取通知,接收方客戶端用於根據發送方客戶端發送的“紅包”領取通知,執行相應的“紅包”領取操作。需要說明的是,發送方客戶端發送“紅包”領取通知的方式有多種,以發送方客戶端為支付寶客戶端為例來說,支付寶客戶端發送“紅包”領取通知的方式可以包括兩種:第一種,支付寶客戶端可以在群組中發送“紅包”領取通知,該群組可以通過以下步驟建立:通訊錄->群聊->選擇群類型(如,娛樂群)->選擇用戶;第二種,發送方用戶在“支付寶”應用界面中,通過觸發“紅包”文字或相應的“紅包”圖案,即可轉入紅包產生界面;在紅包產生界面,發送方用戶輸入口令,並在選擇的群類型中輸入“總金額”以及“紅包個數”,之後點擊“發紅包”後,即可完成“紅包”領取通知的發送。可以理解的是,通過上述兩種方式發送的“紅包”領取通知可以包括“總金額”和“紅包個數”等資訊。
圖3中,在發送方客戶端發送“紅包”領取通知之後,服務端就可以接收到第一請求,該第一請求中可以包括紅包總金額以及待發送的紅包數量,之後服務端可以從紅包 總金額中劃分出紅包數量的紅包金額;當服務端接收到接收方客戶端發送的“紅包”領取請求時,也即在接收方用戶領取紅包時,將其中的一個紅包金額分配給接收方客戶端。
然而,在服務端劃分紅包數量的紅包金額的過程中,通常隨機產生每個紅包金額,由此服務端隨機產生的紅包金額可能會非常大,也可能會非常小(如,0.01),也即具有紅包金額不可控的問題。
當本發明的電腦系統中隨機數的產生方法應用於圖3所示的場景中時,可以解決上述紅包金額不可控的問題。具體地,當本發明的電腦系統中隨機數的產生方法應用於圖3所示的場景中時,待產生的隨機數的總和相當於紅包總金額,待產生的隨機數的個數相當於待發送的紅包數量,隨機數相當於紅包金額,而隨機數的產生方法可以為紅包金額的產生方法,其中,圖4提供了一種紅包金額的產生方法,圖4中,該方法具體可以包括如下步驟:
步驟410,服務端接收發送方客戶端發送的第一請求。
該第一請求可以包括紅包總金額以及待發送的紅包數量。
步驟420,根據紅包總金額和紅包數量,確定平均分配金額。
此處,平均分配金額可以為紅包總金額除以紅包數量得到的商。舉例來說,假設紅包總金額為100元,紅包數 量為10個,則平均分配金額可以為100/10=10元,也即平均每個人可以分配10元。
步驟430,將待產生的紅包數量的紅包金額劃分為多個紅包金額子集合。
其中,每個紅包金額子集合包括一個或兩個紅包金額,當紅包金額子集合包括兩個紅包金額時,兩個紅包金額之和為平均分配金額的兩倍,且兩個紅包金額之商為預設閾值。
此處,紅包金額子集合的數量可以根據待發送的紅包數量確定,如,紅包金額子集合的數量可以根據如下公式計算:INT(紅包數量/2)或者INT(紅包數量/2)+1,其中,INT( )是取整函數,即其用於獲取一個數據的整數部分,具體地,當紅包數量為偶數時,可以根據公式:INT(紅包數量/2),確定紅包金額子集合的數量;而當紅包數量為奇數時,可以根據公式INT(紅包數量/2)+1,確定紅包金額子集合的數量。可以理解的是,在上述紅包數量為偶數的情況下,各紅包金額子集合中可以都包括兩個紅包金額;而在紅包數量為奇數的情況下,則至少有一個紅包金額子集合只包括一個紅包金額。
假設待發送的紅包數量為10個,也即紅包數量為偶數,因此可以確定紅包金額子集合的數量為:INT(10/2)=5個。對劃分得到的5個紅包金額子集合,當每個紅包金額子集合均包括兩個紅包金額時,可以規定該兩個紅包金額的和為平均分配金額的兩倍,且該兩個紅包金 額的商為預設閾值,在對兩個紅包金額作出上述規定之後,該兩個紅包金額就可以構成如公式1所示的二元一次方程。
而假設待發送的紅包數量為9個,也即紅包數量為奇數時,可以確定紅包金額子集合的數量為:INT(9/2)+1=5個。對劃分得到的5個紅包金額子集合,當1個紅包金額子集合包括1個紅包金額,而其它紅包金額子集合包括兩個紅包金額時,也可以規定該兩個紅包金額的和為平均分配金額的兩倍,且該兩個紅包金額的商為預設閾值,在對兩個紅包金額作出上述規定之後,該兩個紅包金額也可以構成如上公式1所示的二元一次方程。
需要說明的是,本發明中,通過將紅包金額子集合中兩個紅包金額的和與商進行相應的規定,可以實現對同一紅包金額子集合中兩個紅包金額的差值進行控制的目的,且各紅包金額在中間區域相對平均,也即各紅包金額是在以平均分配金額為中心劃分出的範圍之內,由此可以保證各接收方客戶端分配的紅包金額相對平均,也即可以保證接收方用戶分配的“紅包”金額相對平均,這可以提升用戶的體驗。
步驟440,確定多個紅包金額子集合中每個紅包金額子集合中的一個或兩個紅包金額,從而得到紅包數量的紅包金額。
在紅包數量為偶數的情況下,根據公式1可以確定出每個紅包金額子集合中的兩個紅包金額;在確定出每個紅 包金額子集合中的兩個紅包金額之後,就可以得到紅包數量的紅包金額;如前述例子,在確定出5個紅包金額子集合中的每個紅包金額之後,就可以得到10個紅包金額。需要說明的是,當某一紅包金額子集合中包括1個紅包金額時,則該一個紅包金額可以根據平均分配金額確定,如,可以將平均分配金額隨機衰減後作為上述一個紅包金額。此處,在紅包數量為奇數的情況下,通過將平均分配金額隨機衰減後賦予最後一個紅包金額,可以避免最後一個紅包金額固定的問題,由此可以避免不法分子利用這種規律進行不法行為的問題。
需要說明的是,對於紅包金額子集合中包括兩個紅包金額的情況,上述只是給出了兩個紅包金額的一種確定方法,在本發明的其它實施方式中,紅包金額子集合中的兩個紅包金額也可以通過如圖2所示的各步驟確定;即只需將圖2所示的各步驟中的平均數替換為平均分配金額,將隨機數替換為紅包金額即可。
服務端在依照一個紅包金額子集合中一個或者兩個紅包金額的確定方法(如,圖2中的各步驟),確定出每個紅包金額子集合中的一個或者兩個紅包金額之後,就可以得到紅包數量的紅包金額。
可選地,在執行步驟440之後,還可以執行如下步驟:
步驟a:根據紅包總金額以及紅包數量的紅包金額,確定剩餘金額。
紅包數量的紅包金額之和,也即發送的“紅包”的金額之和往往並不等於紅包總金額,由此就造成了資金虧損的問題。為解決該問題,本發明中,可以根據紅包總金額以及紅包數量的紅包金額,確定剩餘金額,如,可以通過計算紅包總金額與紅包數量的紅包金額之和的差值,來確定剩餘金額。如前述例子,在紅包總金額為100元的情況下,假設10個紅包金額之和為90元,則剩餘金額為10元。
當然,在實際應用中,剩餘金額也可以在執行圖2各步驟的時候確定,由此,可以提高剩餘金額的確定效率。在一個例子中,可以剩餘金額初始化為紅包總金額,之後,在每次確定出一個紅包金額子集合中的一個或者兩個紅包金額之後,就將剩餘金額更新為剩餘金額與一個紅包金額的差值,或者將剩餘金額更新為剩餘金額與兩個紅包金額之後的差值,可以理解的是,當所有的紅包金額子集合中的紅包金額確定完成之後,更新後的剩餘金額即為最終的剩餘金額。
步驟b:對剩餘金額進行拆分。
在一種實現方式中,可以將剩餘金額拆分為紅包數量的子數據。如前述例子,在剩餘金額為10元,而紅包數量為10個時,拆分後得到的子數據可以為10個1元。當然,在實際應用中,也可以將剩餘金額拆分為其它個數的子數據,且各子數據可以不相同,本發明對此不作限定。
步驟c:將拆分後的剩餘金額疊加至紅包數量的紅包 金額中,得到更新後的紅包數量的紅包金額。
舉例來說,假設紅包總金額為:10元,紅包數量為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。
通過將拆分後的剩餘金額疊加至紅包數量的紅包金額中,可以避免資金損失。
可選地,在執行步驟440之後,或者在執行步驟C之後,還可以執行如下步驟:
步驟x:對紅包數量的紅包金額進行重排序。
此處,可以是按照任意的順序對紅包數量的紅包金額進行重排序,以避免各紅包金額按大小順序儲存;此外,還可以保證在紅包總金額和紅包數量相同的情況下,連續兩次以上劃分的紅包數量的紅包金額的順序不一致。
步驟y:將重排序後的紅包數量的紅包金額儲存到列表中。
當然,在實際用中,也可以將重排序後的紅包數量的紅包金額儲存到其它形式的儲存單元中,本發明對此不作限定。
需要說明的是,上述步驟x和步驟y中的紅包數量的紅包金額也可以是指更新後的紅包數量的紅包金額。
步驟450,接收接收方客戶端發送的第二請求。
該第二請求可以包括接收方用戶的標識(例如,接收方用戶的帳號資訊等)。
步驟460,根據第二請求,將紅包數量的紅包金額中目標金額分配至接收方客戶端。
此處的目標金額可以是指紅包數量的紅包金額中的任一紅包金額,或者也可以是指更新後的紅包數量的紅包金額中任一紅包金額。
如,服務端在接收到第二請求之後,可以從列表中讀取目標金額;之後將目標金額分配至接收方客戶端。
為了更清楚的說明本發明提供的電腦系統中隨機數的產生方法在圖3所示的“紅包”的發送的場景中的應用,本發明給出了如下具體的實施方式。
圖5為圖3所示的場景中另一種紅包金額的產生方法流程圖。如圖5所示,所述方法具體可以包括:
步驟510,接收發送方客戶端發送的第一請求。
可選地,在接收第一請求之前,可以預先設定最小分配金額(如,0.01元)。
該第一請求可以包括紅包總金額以及紅包數量(count)。
步驟520,判斷紅包數量(count)是否為1,若是,則執行步驟530;若否,則執行步驟540。
步驟530,將紅包總金額放入列表。
步驟540,判斷紅包總金額是否為紅包數量*預設的最小分配金額,若是,則執行步驟550;若否,則執行步 驟560。
步驟550,採用平均分配算法將紅包總金額劃分為紅包數量的最小分配金額,並將其放入列表。
步驟560,計算平均分配金額、最大相差倍數、步差以及紅包金額的偏移範圍,並將剩餘金額初始化為紅包總金額。
此處,平均分配金額的計算方法可參照步驟120或者420,最大相差倍數、步差以及紅包金額的偏移範圍可以參照步驟210至步驟250,在此不復贅述。
步驟570,判斷是否已確定出紅包數量的紅包金額,若否,則執行步驟580,若是,則執行步驟5160。
步驟580,判斷當前確定的紅包金額是否是最後一個紅包金額,若是,則執行步驟590;若否,則執行步驟5120。
步驟590,對平均分配金額進行隨機衰減。
步驟5100,根據隨機衰減後的平均分配金額以及預設的最小分配金額,確定最後一個紅包金額。
步驟5110,將最後一個紅包金額加入列表中,並將剩餘金額更新為剩餘金額與最後一個紅包金額的差值。
步驟5120,從步驟560中計算的偏移範圍之內隨機選取任一值作為當前的偏移量。
步驟5130,根據步驟560中計算的最大相差倍數、步差、第一偏移量以及當前步長,計算出一個紅包金額。
此處,一個紅包金額的計算方法可以參照步驟370。
步驟5140,根據平均分配金額以及一個紅包金額,計算另一紅包金額。
此處,另一紅包金額的計算方法可以參照步驟380。
步驟5150,將剩餘金額更新為剩餘金額與上述兩個紅包金額之和的差值,並將一個紅包金額與另一紅包金額加入列表。
步驟5160,判斷剩餘金額是否大於0,若是,則執行步驟5170;若否,則執行步驟5180。
步驟5170,對剩餘金額進行拆分;將拆分後的剩餘金額疊加至紅包數量的紅包金額中,得到更新後的紅包數量的紅包金額。
此處,剩餘金額的拆分方法以及疊加拆分後的剩餘金額的方法可以參照步驟B至步驟C或者步驟b至步驟c。
步驟5180,將紅包數量的紅包金額或者更新後的紅包數量的紅包金額進行重排序。
步驟5190,接收接收方客戶端發送的第二請求。
步驟5200,將紅包數量的紅包金額或者更新後的紅包數量的紅包金額中的目標金額分配至接收方客戶端。
本發明的上述實施例具有如下技術效果:
1)通過對紅包金額子集合中兩個紅包金額的和與商的限定,可以實現對劃分的紅包金額的控制。
2)通過對剩餘金額進行拆分,並將拆分後的剩餘金額疊加至紅包數量的紅包金額中,可以保障不會出現資損;此外,還可以保障分配更均勻。
3)通過對紅包數量的紅包金額進行重排序,可以避免紅包數量的紅包金額按大小順序儲存。
4)在紅包數量為奇數的情況下,通過將平均分配金額隨機衰減後賦予最後一個紅包金額,可以避免最後一個紅包金額固定的問題,由此可以避免不法分子利用這種規律進行不法行為的問題。
當然,本發明提出的電腦系統中隨機數的產生方法並不局限於“紅包”發送的場景,也可以應用於其它的場景,如商戶活動金額分配,本發明對此不作限定。
與上述電腦系統中隨機數的產生方法對應地,本發明實施例還提供的一種電腦系統中隨機數的產生裝置,如圖6所示,該裝置包括:接收單元601,用於接收第一請求,該第一請求包括待產生的隨機數的總和以及個數。
確定單元602,用於根據接收單元601接收的總和以及個數,確定平均數。
劃分單元603,用於將待產生的個數的隨機數劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數,當子集合包括兩個隨機數時,兩個隨機數之和為平均數的兩倍,且兩個隨機數之商為預設閾值。
確定單元602,還用於確定多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數。
可選地,確定單元602,還用於根據個數,確定循環週期; 根據預設閾值,確定分配因子;根據平均數以及分配因子,確定最大相差倍數;根據最大相差倍數、平均數以及循環週期,確定步差;根據步差,確定隨機數的偏移範圍;確定單元602具體用於:確定在偏移範圍內的第一偏移量;根據最大相差倍數、步差、當前步長以及第一偏移量,確定兩個隨機數中的第一隨機數;根據平均數以及第一隨機數,確定兩個隨機數中的第二隨機數。
可選地,確定單元602,還用於對平均數進行隨機衰減;根據隨機衰減後的平均數以及預設的最小隨機數,確定第二子集合中的一個隨機數。
可選地,所述裝置還包括:拆分單元603和疊加單元604。
確定單元602,還用於根據總和以及所述個數的隨機數,確定剩餘數;拆分單元603,用於對確定單元602確定的剩餘數進行拆分;疊加單元604,用於將拆分單元603拆分後的剩餘數疊加至所述個數的隨機數中,得到更新後的所述個數的隨機數。
可選地,所述裝置還包括:排序單元605,用於對所述個數的隨機數進行重排序;儲存單元606,用於將排序單元605重排序後的所述個數的隨機數儲存到列表中。
本發明實施例裝置的各功能模組的功能,可以通過上述方法實施例的各步驟來實現,因此,本發明提供的裝置的具體工作過程,在此不復贅述。
本發明實施例提供的電腦系統中隨機數的產生裝置,接收單元601接收第一請求,該第一請求包括待產生的隨機數的總和以及個數;確定單元602根據總和以及個數,確定平均數;劃分單元603將待產生的個數的隨機數劃分為多個子集合;確定單元602確定多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數。由此實現了對產生的隨機數進行控制的目的。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本發明所描述的功能可以用硬體、軟體、韌體或它們的任意組合來實現。當使用軟體實現時,可以將這些功能儲存在電腦可讀介質中或者作為電腦可讀介質上的一個或多個指令或代碼進行傳輸。
以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,並不用於限定本發明的保護範圍,凡在本發明的技術方案的基礎之上,所 做的任何修改、等同替換、改進等,均應包括在本發明的保護範圍之內。

Claims (10)

  1. 一種支付系統服務端的電腦系統中隨機數的產生方法,其特徵在於,該方法包括:伺服器接收發送方客戶端發送的用於紅包分配的第一請求,所述第一請求包括待產生的隨機數的總和以及個數,分別作為紅包總金額以及待發送的紅包數量;根據所述總和以及所述個數,確定平均數;將待產生的所述個數的隨機數劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數,當子集合包括兩個隨機數時,所述兩個隨機數之和為所述平均數的兩倍,且所述兩個隨機數之商為預設閾值;確定所述多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數;接收接收方客戶端發送的第二請求;以及根據所述第二請求,將所述個數的隨機數中目標隨機數作為紅包金額分配至所述接收方客戶端。
  2. 根據請求項1所述的方法,其中,當所述多個子集合中的第一子集合包括兩個隨機數時,在確定所述第一子集合中的兩個隨機數之前,所述方法還包括:根據所述個數,確定循環週期;根據所述預設閾值,確定分配因子;根據所述平均數以及所述分配因子,確定最大相差倍 數;根據所述最大相差倍數、所述平均數以及所述循環週期,確定步差;根據所述步差,確定隨機數的偏移範圍;所述確定所述第一子集合中的兩個隨機數,包括:確定在所述偏移範圍內的第一偏移量;根據所述最大相差倍數、所述步差、當前步長以及所述第一偏移量,確定所述兩個隨機數中的第一隨機數;根據所述平均數以及所述第一隨機數,確定所述兩個隨機數中的第二隨機數。
  3. 根據請求項1所述的方法,其中,當所述多個子集合中的第二子集合包括一個隨機數時,所述確定所述第二子集合中的一個隨機數,包括:對所述平均數進行隨機衰減;根據隨機衰減後的平均數以及預設的最小隨機數,確定所述第二子集合中的一個隨機數。
  4. 根據請求項1至3任一項所述的方法,其中,所述方法還包括:根據所述總和以及所述個數的隨機數,確定剩餘數;對所述剩餘數進行拆分;將拆分後的剩餘數疊加至所述個數的隨機數中,得到更新後的所述個數的隨機數。
  5. 根據請求項1所述的方法,其中,在所述得到所述個數的隨機數之後,所述方法還包括:對所述個數的隨機數進行重排序;將重排序後的所述個數的隨機數儲存到列表中。
  6. 一種支付系統服務端的電腦系統中隨機數的產生裝置,其特徵在於,該裝置包括:接收單元,用於接收發送方客戶端發送的用於紅包分配的第一請求,所述第一請求包括待產生的隨機數的總和以及個數,分別作為紅包總金額以及待發送的紅包數量;確定單元,用於根據所述接收單元接收的所述總和以及所述個數,確定平均數;以及劃分單元,用於將待產生的所述個數的隨機數劃分為多個子集合,其中,每個子集合包括一個或兩個隨機數,當子集合包括兩個隨機數時,所述兩個隨機數之和為所述平均數的兩倍,且所述兩個隨機數之商為預設閾值,其中所述確定單元,還用於確定所述多個子集合中每個子集合中的一個或兩個隨機數,從而得到所述個數的隨機數,且所述確定單元,還用於接收接收方客戶端發送的第二請求,根據所述第二請求,將所述個數的隨機數中目標隨機數作為紅包金額分配至所述接收方客戶端。
  7. 根據請求項6所述的裝置,其中,所述確定單元,還用於根據所述個數,確定循環週期;根據所述預設閾值,確定分配因子;根據所述平均數以及所述分配因子,確定最大相差倍數;根據所述最大相差倍數、所述平均數以及所述循環週期,確定步差;根據所述步差,確定隨機數的偏移範圍;所述確定單元具體用於:確定在所述偏移範圍內的第一偏移量;根據所述最大相差倍數、所述步差、當前步長以及所述第一偏移量,確定所述兩個隨機數中的第一隨機數;根據所述平均數以及所述第一隨機數,確定所述兩個隨機數中的第二隨機數。
  8. 根據請求項6所述的裝置,其中,所述確定單元,還用於對所述平均數進行隨機衰減;根據隨機衰減後的平均數以及預設的最小隨機數,確定所述第二子集合中的一個隨機數。
  9. 根據請求項7至8任一項所述的裝置,其中,所述裝置還包括:所述確定單元,還用於根據所述總和以及所述個數的 隨機數,確定剩餘數;拆分單元,用於對所述確定單元確定的所述剩餘數進行拆分;疊加單元,用於將所述拆分單元拆分後的剩餘數疊加至所述個數的隨機數中,得到更新後的所述個數的隨機數。
  10. 根據請求項6所述的裝置,其中,所述裝置還包括:排序單元,用於對所述個數的隨機數進行重排序;儲存單元,用於將所述排序單元重排序後的所述個數的隨機數儲存到列表中。
TW106120042A 2016-08-29 2017-06-15 電腦系統中隨機數的產生方法及裝置 TWI695317B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
??201610751289.X 2016-08-29
CN201610751289.X 2016-08-29
CN201610751289.XA CN106919365A (zh) 2016-08-29 2016-08-29 计算机系统中随机数的生成方法及装置

Publications (2)

Publication Number Publication Date
TW201807566A TW201807566A (zh) 2018-03-01
TWI695317B true TWI695317B (zh) 2020-06-01

Family

ID=59454597

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106120042A TWI695317B (zh) 2016-08-29 2017-06-15 電腦系統中隨機數的產生方法及裝置

Country Status (9)

Country Link
US (1) US10649734B2 (zh)
JP (1) JP6637219B2 (zh)
KR (1) KR102102088B1 (zh)
CN (1) CN106919365A (zh)
MY (1) MY192451A (zh)
PH (1) PH12019500451A1 (zh)
SG (1) SG11201901736SA (zh)
TW (1) TWI695317B (zh)
WO (1) WO2018040921A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919365A (zh) 2016-08-29 2017-07-04 阿里巴巴集团控股有限公司 计算机系统中随机数的生成方法及装置
CN107743091A (zh) * 2017-11-20 2018-02-27 珠海市魅族科技有限公司 信息处理方法、装置、计算机装置及计算机可读存储介质
US11068240B1 (en) * 2020-06-19 2021-07-20 Panagiotis Andreadakis Aperiodic pseudo-random number generator using big pseudo-random numbers
GB2602787A (en) * 2020-12-17 2022-07-20 Fusion Holdings Ltd Systems and methods for resilient distribution of random numbers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127575A (zh) * 2007-09-12 2008-02-20 中兴通讯股份有限公司 一种均匀分布随机数发生器及均匀分布随机数产生方法
CN102520908A (zh) * 2011-12-20 2012-06-27 大唐微电子技术有限公司 一种伪随机数生成器及伪随机数生成方法
CN102799413A (zh) * 2011-05-25 2012-11-28 清华大学 一种随机数生成方法和装置
TWI435265B (zh) * 2007-11-20 2014-04-21

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688223A (en) 1985-06-24 1987-08-18 International Business Machines Corporation Weighted random pattern testing apparatus and method
US4801870A (en) 1985-06-24 1989-01-31 International Business Machines Corporation Weighted random pattern testing apparatus and method
US4687988A (en) 1985-06-24 1987-08-18 International Business Machines Corporation Weighted random pattern testing apparatus and method
US7077746B2 (en) 2001-06-05 2006-07-18 Torango Lawrence J Progressive wagering system
US7384336B2 (en) 1997-01-15 2008-06-10 Torango Lawrence J Progressive system and methods
US6061819A (en) * 1997-12-29 2000-05-09 Hewlett-Packard Company Generation of reproducible random initial states in RTL simulators
ATE310273T1 (de) 1998-09-14 2005-12-15 Igt Reno Nev Verfahren und vorrichtung zur startwerterzeugung für einen zufallszahlengenerator
JP2001117756A (ja) 1999-10-20 2001-04-27 Iwaki Electronics Corp ランダムパルス発生器ならびにそれを利用した乱数発生装置および確率発生装置
JP4521708B2 (ja) 2001-03-12 2010-08-11 ルネサスエレクトロニクス株式会社 乱数生成装置
US6691141B2 (en) * 2001-04-13 2004-02-10 Science Applications International Corp. Method and apparatus for generating random number generators
JP4467216B2 (ja) 2001-09-07 2010-05-26 Necエレクトロニクス株式会社 乱数発生方法及び装置
US7328228B2 (en) 2003-09-02 2008-02-05 Sap Aktiengesellschaft Mapping pseudo-random numbers to predefined number ranges
JP4587687B2 (ja) 2004-03-26 2010-11-24 株式会社三共 遊技機
US7849121B2 (en) 2006-04-20 2010-12-07 Hewlett-Packard Development Company, L.P. Optical-based, self-authenticating quantum random number generators
CN101473298A (zh) * 2006-06-20 2009-07-01 Nxp股份有限公司 随机数发生器系统、产生随机数的方法
US8187076B2 (en) 2007-09-26 2012-05-29 Aruze Gaming America, Inc. Slot machine performing payout of a predetermined amount of credits when the number of games reaches a predetermined number
US8298070B2 (en) 2008-11-14 2012-10-30 Aruze Gaming America, Inc. Gaming machine that executes free game and the play method
JP5384221B2 (ja) 2009-06-24 2014-01-08 京楽産業.株式会社 遊技機
US8370411B2 (en) * 2010-03-12 2013-02-05 Plx Technology, Inc. Generating unique random numbers for multiple instantiations
JP2012100872A (ja) 2010-11-10 2012-05-31 Daito Giken:Kk 遊技台
JP4991955B1 (ja) 2011-07-25 2012-08-08 株式会社大都技研 遊技台
JP5256478B2 (ja) 2011-11-21 2013-08-07 株式会社大都技研 遊技台
JP2013106805A (ja) 2011-11-21 2013-06-06 Daito Giken:Kk 遊技台
US9641598B1 (en) * 2014-03-31 2017-05-02 Amazon Technologies, Inc. Contextually unique identifier generation service
AU2015101996A4 (en) 2014-12-24 2022-01-20 Isx Ip Ltd Securing a transaction
WO2016118340A1 (en) 2015-01-20 2016-07-28 Alibaba Group Holding Limited Method and system for processing information
CN106919365A (zh) 2016-08-29 2017-07-04 阿里巴巴集团控股有限公司 计算机系统中随机数的生成方法及装置
KR101920190B1 (ko) * 2016-11-22 2019-02-08 한국인터넷진흥원 임의의 ip 생성 방법 및 그 장치
US10146509B1 (en) * 2017-05-10 2018-12-04 Mbds, Inc. ASCII-seeded random number generator

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127575A (zh) * 2007-09-12 2008-02-20 中兴通讯股份有限公司 一种均匀分布随机数发生器及均匀分布随机数产生方法
TWI435265B (zh) * 2007-11-20 2014-04-21
CN102799413A (zh) * 2011-05-25 2012-11-28 清华大学 一种随机数生成方法和装置
CN102520908A (zh) * 2011-12-20 2012-06-27 大唐微电子技术有限公司 一种伪随机数生成器及伪随机数生成方法

Also Published As

Publication number Publication date
PH12019500451A1 (en) 2020-01-20
US10649734B2 (en) 2020-05-12
JP6637219B2 (ja) 2020-01-29
WO2018040921A1 (zh) 2018-03-08
MY192451A (en) 2022-08-21
KR20190043587A (ko) 2019-04-26
SG11201901736SA (en) 2019-04-29
JP2019534499A (ja) 2019-11-28
KR102102088B1 (ko) 2020-04-20
TW201807566A (zh) 2018-03-01
CN106919365A (zh) 2017-07-04
US20190196791A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
TWI695317B (zh) 電腦系統中隨機數的產生方法及裝置
CN107800768B (zh) 开放平台控制方法和系统
CN110991808B (zh) 一种任务分配方法和装置
CN109711940A (zh) 订单分配方法、装置、电子设备及存储介质
US11768706B2 (en) Method, storage medium storing instructions, and apparatus for implementing hardware resource allocation according to user-requested resource quantity
CN108123866B (zh) 消息传输方法及装置
CN106302111B (zh) 一种信息处理方法、终端及服务器
US10296394B2 (en) Consistent hashing
CN108933675B (zh) 会议资源的分配方法、装置及存储介质
CN105656794B (zh) 数据分发方法、装置及计算机可读存储介质
CN110162293B (zh) 一种用于均衡负载的随机编号生成方法、装置和终端
CN108494764A (zh) 一种身份认证方法及装置
CN107040509A (zh) 一种报文发送方法及装置
CN112119608A (zh) 用于可验证秘密共享的系统和异步协议
CN115168302A (zh) 业务数据的导出方法、装置以及电子设备
CN106921607B (zh) 一种密码服务器集群下的密码运算管理方法及系统
US10553062B2 (en) Method for generating winning numbers and apparatus
US20180041342A1 (en) Device and method for sending and verifying a signature
CN110941497B (zh) 一种数据发送方法及装置
CN111835770A (zh) 一种数据处理方法、装置、服务器及存储介质
CN104618421A (zh) 存储资源分配方法及装置
CN110046040A (zh) 分布式任务处理方法及系统和存储介质
WO2024001159A1 (zh) 资源调度方法、装置、电子设备及存储介质
US20160320969A1 (en) Method, Apparatus, and System for Interaction Between Hard Disks
CN115801259A (zh) 事务监管方法、装置、电子设备及存储介质