(57)【要約】  コンピュータシステムにおいて実装される乱数生成方法及び装置である。コンピュータにおいて実装される乱数生成方法においては、第一要求が受け取られた際に、まず、生成対象である乱数が複数のサブセットにソートされ、この場合に、サブセットが二つの乱数を含む際には、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値であり、且つ、次いで、規定数の乱数を取得するべく、サブセットのそれぞれに含まれている一つ又は二つの乱数が順番に判定される。この結果、生成される乱数を制御するという目的が実現される。
2019534499.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて実装される乱数生成方法であって、
第一要求を受け取るステップであって、前記第一要求は、生成対象である特定数の乱数の合計及びカウントを具備する、ステップと、
前記合計及び前記カウントに基づいて平均値を判定するステップと、
前記生成対象の特定数の乱数を複数のサブセットに分割するステップであって、前記サブセットのそれぞれは、一つ又は二つの乱数を具備し、且つ、サブセットが二つの乱数を具備する際に、前記二つの乱数の合計は、前記平均値の２倍であり、且つ、前記二つの乱数の商は、予め設定された閾値である、ステップと、
前記特定数の乱数を取得するべく、前記複数のサブセットのそれぞれ内の前記一つ又は二つの乱数を判定するステップと、
を具備する方法。
【請求項２】
前記複数のサブセットのうちの第一サブセットが二つの乱数を具備する際に、前記第一サブセット内の前記二つの乱数を判定する前に、前記方法は、
前記カウントに基づいてサイクルインターバルを判定するステップと、
前記予め設定された閾値に基づいて分配係数を判定するステップと、
前記平均値及び前記分配係数に基づいて最大差倍数を判定するステップと、
前記最大差倍数、前記平均値、及び前記サイクルインターバルに基づいてステップ差を判定するステップと、
前記ステップ差に基づいて前記乱数の偏差範囲を判定するステップと、
を更に具備し、
前記第一サブセット内の二つの乱数を判定するステップは、
前記偏差範囲内の第一偏差を判定するステップと、
前記最大差倍数、前記ステップ差、現時点のステップサイズ、及び前記第一偏差に基づいて、前記二つの乱数のうちの第一乱数を判定するステップと、
前記平均値及び前記第一乱数に基づいて、前記二つの乱数のうちの第二乱数を判定するステップと、
を具備する、請求項１に記載の方法。
【請求項３】
前記複数のサブセットのうちの第二サブセットが一つの乱数を具備する際に、前記第二サブセット内の一つの乱数を判定する前記ステップは、
前記平均値をランダムに低減するステップと、
前記平均値の前記ランダムな低減の結果及び予め設定された最小乱数に基づいて、前記第二サブセット内の前記一つの乱数を判定するステップと、
を具備する、請求項１に記載の方法。
【請求項４】
前記合計及び前記特定数の乱数に基づいて剰余数を判定するステップと、
前記剰余数をスプリットするステップと、
前記特定数の更新済みの乱数を取得するべく、前記剰余数の前記スプリットの結果を前記特定数の乱数に重畳するステップと、
を更に具備する、請求項１から請求項３までのいずれか一項に記載の方法。
【請求項５】
前記特定数の乱数を取得する前記ステップの後に、前記方法は、
前記特定数の乱数を再ソートするステップと、
前記特定数の再ソート済みの乱数をリストに保存するステップと、
を更に具備する、請求項１から請求項４までのいずれか一項に記載の方法。
【請求項６】
コンピュータシステムにおいて実装される乱数生成装置であって、
第一要求を受け取るように構成された受信ユニットであって、前記第一要求は、生成対象である特定数の乱数の合計及びカウントを具備する、受信ユニットと、
前記受信ユニットによって受け取られた前記合計及び前記カウントに基づいて平均値を判定するように構成された判定ユニットと、
前記生成対象の特定数の乱数を複数のサブセットに分割するように構成された分割ユニットであって、前記サブセットのそれぞれは、一つ又は二つの乱数を具備し、且つ、サブセットが二つの乱数を具備している際に、前記二つの乱数の合計は、前記平均値の２倍であり、且つ、前記二つの乱数の商は、予め設定された閾値である、分割ユニットと、
を具備し、
前記判定ユニットは、前記特定数の乱数を取得するべく、前記複数のサブセットのそれぞれ内の前記一つ又は二つの乱数を判定するように更に構成されている、装置。
【請求項７】
前記サブセットが二つの乱数を具備する際に、前記判定ユニットは、
前記カウントに基づいてサイクルインターバルを判定し、
前記予め設定された閾値に基づいて分配係数を判定し、
前記平均値及び前記分配係数に基づいて最大差倍数を判定し、
前記最大差倍数、前記平均値、及び前記サイクルインターバルに基づいてステップ差を判定し、且つ、
前記ステップ差に従って前記乱数の偏差範囲を判定する、
ように更に構成されており、且つ、
前記判定ユニットは、具体的には、
前記偏差範囲内の第一偏差を判定し、
前記最大差倍数、前記ステップ差、現時点のステップサイズ、及び前記第一偏差に基づいて、前記二つの乱数のうちの第一乱数を判定し、且つ、
前記平均値及び前記第一乱数に基づいて、前記二つの乱数のうちの第二乱数を判定する、
ように構成されている、請求項６に記載の装置。
【請求項８】
前記サブセットが一つの乱数を具備する際に、前記判定ユニットは、
前記平均値をランダムに低減し、且つ、
前記平均値の前記ランダムな低減の結果及び予め設定された最小乱数に基づいて前記サブセット内の前記一つの乱数を判定する、
ように更に構成されている、請求項６に記載の装置。
【請求項９】
前記判定ユニットは、前記合計及び前記特定数の乱数に基づいて剰余数を判定するように更に構成されており、
前記装置は、
前記判定ユニットによって判定された前記剰余数をスプリットするように構成されたスプリットユニットと、
前記特定数の更新済みの乱数を取得するべく、前記スプリットユニットによる前記剰余数のスプリットの結果を前記特定数の乱数に重畳するように構成された重畳ユニットと、
を更に具備する、請求項７又は請求項８に記載の装置。
【請求項１０】
前記特定数の乱数を再ソートするように構成されたソートユニットと、
前記ソートユニットによって再ソートされた前記特定数の乱数をリストに保存するように構成されたストレージユニットと、
を更に具備する、請求項７から請求項９までのいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１６年８月２９日付けで出願されると共に「コンピュータシステムにおいて利用される乱数生成方法及び装置（RANDOM NUMBER GENERATION METHOD AND DEVICE UTILIZED IN COMPUTER SYSTEM）」という名称を有する中国特許出願第 201610751289.X 号に対する優先権を主張するものであり、この特許文献の内容は、引用により、そのすべてが本明細書に包含される。
【０００２】
本出願は、コンピュータ技術の分野に関し、且つ、更に詳しくは、コンピュータシステムにおいて実装される乱数生成方法及び装置に関する。
【背景技術】
【０００３】
従来の技術においては、規定数の乱数の生成を要する際には、通常、ランダム関数を呼び出すことにより、規定数の乱数をランダムに生成している。但し、乱数を効果的に制御する（例えば、乱数を一定の範囲内に維持する）ことは不可能であり、その理由は、乱数がランダムに生成されているからである。その結果、生成された規定数の乱数は、不均一に分布することになる。例えば、「紅包（red packet）」の送信を実行するシナリオにおいては、支払サービスエンドによってランダムに生成される「紅包金額」は、極めて大きなものになる場合もあり、或いは、極めて小さなもの（例えば、０．０１）になる場合もある。この結果、ユーザの経験が相対的に乏しいものとなり得る。
【発明の概要】
【０００４】
本出願は、生成される乱数の効果的な制御を実現する能力を有する、コンピュータシステムにおいて実装される乱数生成方法及び装置について記述している。
【０００５】
第一の態様は、コンピュータシステムにおいて実装される乱数生成方法を提供している。方法は、
第一要求を受け取るステップであって、第一要求は、生成対象である特定数の乱数の合計及びカウントを含む、ステップと、
合計及びカウントに基づいて平均値を判定するステップと、
生成対象の特定数の乱数を複数のサブセットに分割するステップであって、サブセットのそれぞれは、一つ又は二つの乱数を含み、且つ、サブセットが二つの乱数を含んでいる際に、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値である、ステップと、
特定数の乱数を取得するべく、複数のサブセットのそれぞれ内の一つ又は二つの乱数を判定するステップと、
を含む。
【０００６】
第二の態様は、コンピュータシステムにおいて実装される乱数生成装置を提供している。装置は、
第一要求を受け取るように構成された受信ユニットであって、第一要求は、生成対象である特定数の乱数の合計及びカウントを含む、受信ユニットと、
受信ユニットによって受け取られた合計及びカウントに基づいて平均値を判定するように構成された判定ユニットと、
生成対象の特定数の乱数を複数のサブセットに分割するように構成された分割ユニットであって、サブセットのそれぞれは、一つ又は二つの乱数を含み、且つ、サブセットが二つの乱数を含んでいる際に、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値である、分割ユニットと、
を含み、
判定ユニットは、特定数の乱数を取得するべく、複数のサブセットのそれぞれ内の一つ又は二つの乱数を判定するように、更に構成されている。
【０００７】
本出願において提供されるコンピュータシステムにおいて実装される乱数生成方法及び装置においては、第一要求が受け取られた際に、まず、生成対象である乱数が複数のサブセットに分割されており、この場合に、サブセットが二つの乱数を含んでいる際に、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値であり、且つ、次いで、規定数の乱数を取得するべく、サブセットのそれぞれに含まれている一つ又は二つの乱数が、順番に判定されている。この結果、生成される乱数を制御するという目的が実現される。
【図面の簡単な説明】
【０００８】
本開示の実施形態における技術的解決策について更にわかりやすく説明するべく、以下においては、実施形態の説明に必要とされる添付図面について簡潔に紹介している。以下の説明における添付図面は、本開示のいくつかの実施形態を示すものに過ぎず、且つ、当業者は、創造的な努力を伴うことなしに、これらの添付図面からその他の図面を更に導出し得ることが明らかである。
【０００９】
【図１】本出願の一実施形態による、コンピュータシステムにおいて実装される乱数生成方法のフローチャートである。
【図２】本出願による、サブセット内の乱数を判定する方法の概略フローチャートである。
【図３】本出願による、コンピュータシステムにおいて実装される乱数生成方法の適用シナリオの概略図である。
【図４】図３に示されているシナリオにおいて紅包金額を生成する方法のフローチャートである。
【図５】図３に示されているシナリオにおいて紅包金額を生成する別の方法のフローチャートである。
【図６】本出願の一実施形態による、コンピュータシステムにおいて実装される乱数生成装置の概略図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照し、本開示の実施形態について説明する。
【００１１】
本出願において提供されるコンピュータシステムにおいて実装される乱数生成方法及び装置は、生成対象である特定数の乱数の合計及びカウントが固定されている際に乱数を生成するシナリオに適用可能であり、且つ、具体的には、生成対象の特定の数の乱数の合計及びカウントが固定されている際に均一に分散した乱数を生成するシナリオに適用可能である。
【００１２】
図１は、本出願の一実施形態によるコンピュータシステムにおいて実装される乱数生成方法のフローチャートである。方法は、例えば、支払システムのサービスエンドなどの、サーバ、システム、又は装置という、処理能力を有する機器によって実行することができる。図１に示されているように、方法は、具体的には、以下のステップを含むことができる。
【００１３】
ステップ１１０：第一要求を受け取る。
【００１４】
第一要求は、乱数を生成するように、サーバ、システム、又は装置に対して命令するべく使用される任意の要求であってよい。第一要求は、生成対象の乱数の合計、生成対象の特定数の乱数のカウント、及びこれらに類似したものを含むことができる。
【００１５】
ステップ１２０：合計及びカウントに基づいて平均値を判定する。
【００１６】
ここで、平均値は、カウントによって合計を除算することによって得られた商であってよい。「紅包」を送信するシナリオを一例として使用すれば、紅包の合計金額が１０ＲＭＢであり、紅包のカウントが１０であると仮定すれば、平均分配金額は、１００／１０＝１０ＲＭＢであってよい。即ち、平均で、１０ＲＭＢをそれぞれの人物に分配することができる。
【００１７】
ステップ１３０：生成対象の特定数の乱数を複数のサブセットに分割する。
【００１８】
サブセットのそれぞれは、一つ又は二つの乱数を含んでいる。サブセットが二つの乱数を含んでいる際に、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値である。
【００１９】
ここで、サブセットのカウントは、生成対象の乱数のカウントに基づいて判定することができる。例えば、サブセットのカウントは、ＩＮＴ（ｃｏｕｎｔ／２）又はＩＮＴ（ｃｏｕｎｔ／２）＋１という式に基づいて算出することができる。ＩＮＴ（）は、丸め関数であり、即ち、ＩＮＴ（）は、数値の整数部分を取得するべく使用されている。具体的には、生成対象の乱数のカウントが偶数である際には、サブセットのカウントは、ＩＮＴ（ｃｏｕｎｔ／２）という式に基づいて判定されてもよく、且つ、生成対象の乱数のカウントが奇数である際には、サブセットのカウントは、ＩＮＴ（ｃｏｕｎｔ／２）＋１という式に基づいて判定されてもよい。生成対象の乱数のカウントが偶数である際には、サブセットのそれぞれは、二つの乱数を含んでいてもよく、且つ、生成対象の乱数のカウントが奇数である際には、サブセットのうちの少なくとも一つは、一つの乱数のみを含むことを理解されたい。
【００２０】
例えば、生成対象の乱数のカウントが１０である、即ち、生成対象の乱数のカウントが偶数である、と仮定すれば、サブセットのカウントは、ＩＮＴ（１０／２）＝５であると判定することができる。分割を通じて得られた５つのサブセットについて、サブセットのそれぞれが二つの乱数を含んでいる際に、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値であると定義することができる。二つの乱数について上述の定義が実施された後に、二つの乱数は、二つの未知数を有する以下の一次方程式を構成することができる。
【００２１】
【数１】
2019534499.tif 000003
【００２２】
Ｓ１及びＳ２は、それぞれ、サブセット内の二つの乱数を表しており、ＡＶＧは、平均値であり、且つ、ＧＡＰは、予め設定された閾値を意味し、これは、実際のニーズに従って判定することができる。
【００２３】
別の例として、生成対象の乱数のカウントが９である、即ち、生成対象の乱数のカウントが奇数である、と仮定すれば、サブセットのカウントは、ＩＮＴ（９／２）＋１＝５であると判定することができる。分割を通じて得られた５つのサブセットについて、一つのサブセットが一つの乱数を含み、且つ、その他のサブセットが二つの乱数を含んでいる際にも、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値であると定義することができる。二つの乱数について上述の定義が実施された後に、この場合にも、二つの乱数は、式１に示されている二つの未知数を有する一次方程式を構成することができる。
【００２４】
本出願においては、サブセット内の二つの乱数の合計及び商を対応する方式によって定義することにより、同一のサブセット内の二つの乱数の間の差を制御するという目的を実現することが可能であり、且つ、乱数の値は、中央領域において相対的に類似しており、即ち、乱数は、中心として平均値を使用することによって分割された範囲内に含まれており、これにより、生成される乱数が相対的に均一に分散することを保証し得ることに留意されたい。
【００２５】
ステップ１４０：特定数の乱数を取得するべく、複数のサブセットのそれぞれ内の一つ又は二つの乱数を判定する。
【００２６】
生成対象の乱数のカウントが偶数である際には、それぞれのサブセット内の二つの乱数は、式１に基づいて判定することができる。それぞれのサブセット内の二つの乱数が判定された後に、特定数の乱数を取得することができる。上述の例においては、５つのサブセット内のそれぞれの乱数が判定された後に、１０個の乱数を取得することができる。サブセットが一つの乱数を含んでいる際には、乱数は、平均値に基づいて判定することができることに留意されたい。例えば、一つの乱数として使用するべく、平均値をランダムに低減することができる。或いは、この代わりに、乱数は、一つの乱数として平均値を直接的に使用するなどのように、別の方式によって判定することもできる。これは、本出願においては、制限されていない。
【００２７】
サブセットが二つの乱数を含んでいるケースにおいては、以上は、サブセット内の二つの乱数を判定する一つの方法を提供しているに過ぎないことに留意されたい。本出願の別の実装形態においては、サブセット内の二つの乱数は、この代わりに、図２に示されているステップを通じて判定することができる。
【００２８】
ステップ２１０：生成対象の乱数のカウントに基づいてサイクルインターバルを判定する。
【００２９】
一実装形態においては、サイクルインターバルは、式２に基づいて判定することができる。
【００３０】
Ｉｎｔｅｒｖａｌ＝ｃｏｕｎｔ／２      （式２）
【００３１】
Ｉｎｔｅｒｖａｌは、サイクルインターバルであり、且つ、ｃｏｕｎｔは、生成対象の乱数のカウントである。
【００３２】
ステップ２２０：予め設定された閾値に基づいて分配係数を判定する。
【００３３】
一実装形態においては、分配係数は、式３に基づいて判定することができる。
【００３４】
ｐｒｉｍｅｒ＝（２＊ＧＡＰ）／（１＋ＧＡＰ）      （式３）
【００３５】
Ｐｒｉｍｅｒは、分配係数であり、且つ、ＧＡＰは、予め設定された閾値である。
【００３６】
ステップ２３０：平均値及び分配係数に基づいて最大差倍数を判定する。
【００３７】
一実装形態においては、最大差倍数は、式４に基づいて判定することができる。
【００３８】
ｔｏｐ＝Ｍａｔｈ．ｍｉｎ（（ＡＶＧ＊ｐｒｉｍｅｒ），（２＊ＡＶＧ-１））  （式４）
【００３９】
この式において、ｔｏｐは、最大差倍数であり、ＡＶＧは、平均値であり、ｐｒｉｍｅｒは、分配係数であり、且つ、Ｍａｔｈ．ｍｉｎ（）は、最小値を取得する関数である。例えば、（ＡＶＧ＊ｐｒｉｍｅｒ）及び（２＊ＡＶＧ−１）という二つの値が比較され、且つ、次いで、最小値が最大差倍数として取得される。
【００４０】
ステップ２４０：最大差倍数、平均値、及びサイクルインターバルに基づいてステップ差を判定する。
【００４１】
一実装形態においては、ステップ差は、式５に基づいて判定することができる。
【００４２】
ｓｔｅｐＭ＝（ｔｏｐ−ＡＶＧ）／Ｉｎｔｅｒｖａｌ      （式５）
【００４３】
ＳｔｅｐＭは、ステップ差であり、ｔｏｐは、最大差倍数であり、ＡＶＧは、平均値であり、且つ、Ｉｎｔｅｒｖａｌは、サイクルインターバルである。
【００４４】
ステップ２５０：ステップ差に基づいて乱数の偏差範囲を判定する。
【００４５】
一実装形態においては、乱数の偏差範囲は、式６に基づいて判定することができる。
【００４６】
Ｒｉ＝（ｉｎｔ）（ｌｄ／（５＋ｒａｎｄｏｍ．ｎｅｘｔＩｎｔ（２５））＊ｓｔｅｐＭ）      （式６）
【００４７】
Ｒｉは、偏差範囲であり、ｓｔｅｐＭは、ステップ差であり、且つ、ｒａｎｄｏｍ．ｎｅｘｔＩｎｔ（２５）は、０〜２５の範囲から任意の整数をランダムに選択するランダム関数である。式６に基づいて、Ｒｉは、［０，１／３０＊ｓｔｅｐＭ］である、即ち、偏差範囲は、［０，１／３０＊ｓｔｅｐＭ］である、と判定することができる。
【００４８】
ステップ２６０：偏差範囲内の第一偏差を判定する。
【００４９】
第一偏差は、ここでは、［０，ｌ／３０＊ｓｔｅｐＭ］という偏差範囲からランダムに選択された任意の値を意味し得る。
【００５０】
ステップ２７０：最大差倍数、ステップ差、現時点のステップサイズ、及び第一偏差に基づいて、二つの乱数のうちの第一乱数を判定する。
【００５１】
一実装形態においては、二つの乱数のうちの第一乱数は、式７に基づいて判定することができる。
【００５２】
Ｓ１＝ｔｏｐ−（ｉｎｔ）（（ｓｔｅｐＧｏ＋＋）＊ｓｔｅｐＭ）−ｒｉ      （式７）
【００５３】
Ｓ１ は、二つの乱数のうちの第一乱数であり、且つ、第一乱数は、二つの乱数のうちの大きなものを意味していてもよく、ｔｏｐは、最大差倍数であり、ｓｔｅｐＧｏは、現時点のステップサイズであり、第一サブセット内の第一乱数が判定される際に、ｓｔｅｐＧｏは、０であってもよく、且つ、その後に、第二サブセット内の第一乱数が判定される際には、ｓｔｅｐＧｏは、１であってもよく、即ち、ｓｔｅｐＧｏは、毎回、１だけ増大し、以下同様であり、ｓｔｅｐＭは、ステップ差であり、且つ、ｒｉは、第一偏差である。
【００５４】
ステップ２８０：平均値及び第一乱数に基づいて、二つの乱数のうちの第二乱数を判定する。
【００５５】
一実装形態においては、二つの乱数のうちの第二乱数は、式８に基づいて判定することができる。
【００５６】
Ｓ２＝（ｉｎｔ）（２＊ＡＶＧ）−Ｓ１      （式８）
【００５７】
Ｓ２は、二つの乱数のうちの第二乱数であり、且つ、第二乱数は、二つの乱数のうちの小さなものを意味していてもよく、ＡＶＧは、平均値であり、且つ、Ｓ１は、二つの乱数のうちの第一乱数である。
【００５８】
以上は、別の実装形態におけるサブセット内の二つの乱数を判定する方法について説明している。サブセットが一つの乱数のみを含む際には、一つの乱数は、
平均値をランダムに低減するステップと、
平均値のランダムな低減の結果及び予め設定された最小乱数に基づいて第二サブセット内の一つの乱数を判定するステップと、
というステップを通じて判定することができる。第二サブセットは、ここでは、一つの乱数のみを含む任意のサブセットを意味し得る。
【００５９】
一実装形態においては、第二サブセット内の一つの乱数は、式９に基づいて判定することができる。
【００６０】
Ｓ１＝（ｉｎｔ）Ｍａｔｈ．ｍａｘ（ＭＩＮ，（ＡＶＧ−１−ｒａｎｄｏｍ．ｎｅｘｔＩｎｔ（ＦＬＵＣＴＵＡＴＩＯＮ）））      （式９）
【００６１】
Ｓ１は、一つの乱数であり、ＭＩＮは、予め設定された最小乱数であり、例えば、ＭＩＮは、０．０１であってもよく、ＡＶＧは、平均値であり、ＦＬＵＣＴＵＡＴＩＯＮは、予め設定された定数であり、且つ、この定数は、平均値に対して低減を実行するための値であってもよく、且つ、Ｍａｔｈ．ｍａｘ（）は、最大値を取得する関数である。例えば、ＭＩＮ及び（ＡＶＧ−１−ｒａｎｄｏｍ．ｎｅｘｔＩｎｔ（ＦＬＵＣＴＵＡＴＩＯＮ））という二つの値が比較され、且つ、次いで、最大数が、第二サブセット内の一つの乱数として取得される。
【００６２】
ステップ１４０を再度参照すれば、サブセット内の一つ又は二つの乱数を判定する方法に従ってそれぞれのサブセット内の一つ又は二つの乱数を判定した後に、特定数の乱数を取得することができることを理解されたい。
【００６３】
任意選択により、ステップ１４０が実行された後に、以下のステップを更に実行することができる。
【００６４】
ステップＡ：合計及び特定数の乱数に基づいて剰余数を判定する。
【００６５】
従来の方法又は図２のステップを通じて取得された特定数の乱数の合計は、通常、合計に等しくないことに留意されたい。例えば、「紅包」を送信するシナリオにおいては、特定数の紅包の紅包金額の合計、即ち、送信される「紅包」の金額の合計は、通常、紅包の合計金額と等しくはない。この結果、資金損失の問題が生じる。この問題を解決するべく、本出願においては、合計及び特定数の乱数に基づいて、剰余数を判定することができる。例えば、剰余数は、合計と特定数の乱数の合計との間の差を算出することにより、判定することができる。例えば、上述の例においては、紅包の合計金額が１００ＲＭＢである際に、１０個の紅包金額の合計が９０ＲＭＢであると仮定すれば、剰余金額は、１０ＲＭＢである。
【００６６】
実際の適用の際には、この代わりに、剰余数を判定する効率が改善され得るように、図２のステップが実行される際に剰余数を判定し得ることは、当然である。一例においては、剰余数は、合計となるように初期化されてもよく、且つ、その後に、サブセット内の一つ又は二つの乱数を判定した後に、毎回、剰余数が、剰余数と一つの乱数との間の差に更新されるか、或いは、剰余数が、剰余数と二つの乱数の合計の間の差に更新されている。すべてのサブセット内の乱数が判定された後に、更新済みの剰余数が最終的な剰余数であることを理解されたい。
【００６７】
ステップＢ：剰余数をスプリットする。
【００６８】
一実装形態においては、剰余数は、特定数のサブ数にスプリットすることができる。例えば、上述の例においては、剰余金額が１０ＲＭＢであり、且つ、紅包のカウントが１０である際に、スプリットの後に得られるサブ数は、１０個の１ＲＭＢであってよい。実際の適用の際には、この代わりに、剰余数は、別の特定数のサブ数にスプリットされてもよく、且つ、サブ数が異なり得ることは、当然のことである。これは、本出願においては、制限されていない。
【００６９】
ステップＣ：特定数の更新済みの乱数を取得するべく、剰余数のスプリットの結果を特定数の乱数に重畳する。
【００７０】
例えば、合計が１０であり、生成対象の乱数のカウントが１０であり、且つ、１０個の取得された乱数が、それぞれ、１．２、０．７、１．１、０．８、１．３、０．６、１．５、０．４、１．０、及び０．９であると仮定すれば、剰余数は、０．５であってよい。剰余数０．５は、１０個の０．０５にスプリットされ、且つ、１０個の更新済みの乱数は、１．２５、０．７５、１．１５、０．８５、１．３５、０．６５、１．５５、０．４５、１．０５、及び０．９５であってよい。
【００７１】
「紅包」を送信するシナリオにおいては、スプリットから結果的に得られた剰余金額を特定数の紅包の紅包金額に重畳することにより、資金損失を回避することができる。
【００７２】
任意選択により、ステップ１４０が実行された後に、或いは、ステップＣが実行された後に、以下のステップを更に実行することができる。
【００７３】
ステップＸ：特定数の乱数を再ソートする。
【００７４】
ここでは、乱数が、そのサイズの順序で保存されることを防止するように、且つ、これに加えて、生成対象の乱数の合計及びカウントが、それぞれ、同一である際に、二つ以上の連続的なインスタンスにおいて分割された特定数の乱数の順序が反復的なものとならないことを保証し得るように、特定数の乱数を任意の順序で再ソートすることができる。
【００７５】
ステップＹ：特定数の再ソート済みの乱数をリストに保存する。
【００７６】
実際の適用の際には、この代わりに、特定数の再ソート済みの乱数を別の形態のストレージユニット内において保存し得ることは、当然である。これは、本出願においては、制限されていない。
【００７７】
或いは、この代わりに、ステップＸ及びステップＹにおける特定数の乱数は、剰余数のスプリットの結果が重畳される対象の特定数の乱数を意味し得ることに留意されたい。
【００７８】
本出願において提供されるコンピュータシステムにおいて実装される乱数生成方法は、図３に示されている「紅包」を送信するシナリオにおいて実装し得ることに留意されたい。図３には、一つの送信者クライアント及び複数の受信者クライアントが含まれている。送信者クライアントは、「紅包」受領通知を送信するように構成されている。受信者クライアントは、送信者クライアントによって送信された「紅包」受領通知に従って、対応する「紅包」受領動作を実行するように、構成されている。送信者クライアントが「紅包」受領通知を送信するための複数の方式が存在していることに留意されたい。例えば、送信者クライアントは、Ａｌｉｐａｙクライアントある。Ａｌｉｐａｙクライアントが「紅包」受領通知を送信するための方法には、二つのものが存在し得る。第一の方式においては、Ａｌｉｐａｙクライアントは、「紅包」受領通知をグループ内において送信してもよく、この場合に、グループは、コンタクト→グループ→グループタイプの選択（例えば、エンターテインメントグループ）→ユーザの選択というステップを通じてセットアップすることができる。第二の方式においては、送信者ユーザは、「Ａｌｉｐａｙ」アプリケーションインタフェースにおいて「紅包」テキスト又は対応する「紅包」パターンをトリガすることにより、紅包生成インタフェースに切り替えることができ、紅包生成インタフェースにおいて、送信者ユーザは、「紅包」受領通知の送信を実装し得るように、パスワードを入力し、選択されたグループタイプにおいて「合計金額」及び「紅包カウント」を入力し、且つ、次いで、「紅包の送信」をタップする。上述の二つの方式を使用することによって送信される「紅包」受領通知は、「合計金額」及び「紅包カウント」などの情報を含み得ることを理解されたい。
【００７９】
図３において、送信者クライアントが「紅包」受領通知を送信した後に、サービスエンドは、第一要求を受け取ることができ、この場合に、第一要求は、紅包の合計金額及び送信対象の紅包のカウントを含んでいてもよく、且つ、次いで、サービスエンドは、紅包の合計金額から、そのカウントの紅包の紅包金額を分割することができる。サービスエンドが、受信者クライアントによって送信された「紅包」受領要求を受け取った際に、即ち、受信者ユーザが紅包を受け取る際に、パケット金額のうちの一つが受信者クライアントに分配される。
【００８０】
但し、サービスエンドがそのカウントの紅包の紅包金額を分割するプロセスにおいて、サービスエンドは、通常、それぞれの紅包金額をランダムに生成している。その結果、サービスエンドによってランダムに生成される紅包金額は、極めて大きなものである場合もあり、或いは、極めて小さなもの（例えば、０．０１）である場合もある。即ち、紅包金額を制御することができないという問題点が存在している。
【００８１】
本出願のコンピュータシステムにおいて実装される乱数生成方法が、図３に示されているシナリオにおいて実装された際には、紅包金額を制御することができないという上述の問題点を解決することができる。具体的には、本出願のコンピュータシステムにおいて実装される乱数生成方法が、図３に示されているシナリオにおいて実装される際には、生成対象の乱数の合計は、紅包の合計金額に等しく、生成対象の乱数のカウントは、送信対象の紅包のカウントに等しく、乱数は、紅包金額に等しく、且つ、乱数生成方法は、紅包金額生成方法であってよい。図４は、紅包金額生成方法を提供している。図４において、方法は、具体的には、以下のステップを含むことができる。
【００８２】
ステップ４１０：サービスエンドが、送信者クライアントによって送信された第一要求を受け取る。
【００８３】
第一要求は、紅包の合計金額及び送信対象の特定数の紅包のカウントを含むことができる。
【００８４】
ステップ４２０：紅包の合計金額及び紅包のカウントに基づいて平均分配金額を判定する。
【００８５】
ここで、平均分配金額は、紅包のカウントによって紅包の合計金額を除算することによって得られた商であってよい。例えば、紅包の合計金額が１００ＲＭＢであり、且つ、紅包のカウントが１０であると仮定すれば、平均分配金額は、１００／１０＝１０ＲＭＢであってよい。即ち、平均で、１０ＲＭＢをそれぞれの人物に分配することができる。
【００８６】
ステップ４３０：そのカウントの生成対象の紅包の紅包金額を紅包金額の複数のサブセットに分割する。
【００８７】
紅包金額のそれぞれのサブセットは、一つ又は二つの紅包金額を含んでいる。紅包金額のサブセットが二つの紅包金額を含んでいる際には、二つの紅包金額の合計は、平均分配金額の２倍であり、且つ、二つの紅包金額の商は、予め設定された閾値である。
【００８８】
ここで、紅包金額のサブセットのカウントは、送信対象の紅包のカウントに基づいて判定することができる。例えば、紅包金額のサブセットのカウントは、ＩＮＴ（ｃｏｕｎｔ  ｏｆ  ｒｅｄ  ｐａｃｋｅｔｓ／２）又はＩＮＴ（ｃｏｕｎｔ  ｏｆ  ｒｅｄ  ｐａｃｋｅｔｓ／２）＋１という式に基づいて算出することができる。ＩＮＴ（）は、丸め関数である。即ち、ＩＮＴ（）は、数値の整数部分を取得するべく使用されている。具体的には、紅包のカウントが偶数である際には、紅包金額のサブセットのカウントは、ＩＮＴ（ｃｏｕｎｔ  ｏｆ  ｒｅｄ  ｐａｃｋｅｔｓ／２）という式に基づいて判定されてもよく、且つ、紅包のカウントが奇数である際には、紅包のサブセットのカウントは、ＩＮＴ（ｃｏｕｎｔ／２）＋１という式に基づいて判定されてもよい。紅包のカウントが偶数である際には、紅包金額のそれぞれのサブセットは、二つの紅包金額を含んでいてもよく、且つ、紅包のカウントが奇数である際には、紅包金額のサブセットのうちの少なくとも一つは、一つの紅包金額のみを含むことを理解されたい。
【００８９】
送信対象の紅包のカウントが１０である、即ち、紅包のカウントが偶数である、と仮定すれば、紅包金額のサブセットのカウントは、ＩＮＴ（１０／２）＝５であると判定することができる。分割を通じて取得された紅包金額の５つのサブセットの場合に、紅包金額のそれぞれのサブセットが二つの紅包金額を含んでいる際には、二つの紅包金額の合計は、平均分配金額の２倍であり、且つ、二つの紅包金額の商は、予め設定された閾値であると定義することができる。二つの紅包金額に対して上述の定義が実施された後に、二つの紅包金額は、式１に示されている二つの未知数を有する一次方程式を構成することができる。
【００９０】
送信対象の紅包のカウントが９である、即ち、紅包のカウントが奇数である、と仮定すれば、紅包金額のサブセットのカウントは、ＩＮＴ（９／２）＋１＝５であると判定することができる。この場合にも、分割を通じて取得された紅包金額の５つのサブセットの場合に、紅包金額の一つのサブセットが一つの紅包金額を含み、且つ、紅包金額のその他のサブセットが、それぞれ、二つの紅包金額を含んでいる際に、二つの紅包金額の合計は、平均分配金額の２倍であり、且つ、二つの紅包金額の商は、予め設定された閾値であると定義することができる。二つの紅包金額について上述の定義が実施された後に、この場合にも、二つの紅包金額は、式１に示されている二つの未知数を有する一次方程式を構成することができる。
【００９１】
本出願においては、紅包金額のサブセット内の二つの紅包金額の合計及び商を対応する方式によって定義することにより、紅包金額の同一のサブセット内の二つの紅包金額の間の差を制御するという目的を実現することが可能であり、且つ、紅包金額の値は、中央領域において相対的に類似しており、即ち、紅包金額は、中心として平均分配金額を使用することによって分割された範囲に含まれており、これにより、受信者クライアントに分配される紅包金額は、相対的に均一であることを保証し得る、即ち、受信者ユーザに分配される「紅包」金額が相対的に均一であることを保証し得る、ことに留意されたい。この結果、ユーザ経験を改善することができる。
【００９２】
ステップ４４０：特定数の紅包の紅包金額を取得するべく、紅包金額の複数のサブセットうちの紅包金額のそれぞれのサブセット内の一つ又は二つの紅包金額を判定する。
【００９３】
紅包のカウントが偶数である際には、紅包金額のそれぞれのサブセット内の二つの紅包金額は、式１に基づいて判定することができる。紅包金額のそれぞれのサブセット内の二つの紅包金額が判定された後に、特定数の紅包の紅包金額を取得することができる。上述の例において記述されているように、紅包金額の５つのサブセット内のそれぞれの紅包金額が判定された後に、１０個の紅包金額を取得することができる。紅包金額のサブセットが一つの紅包金額を含んでいる際には、紅包金額は、平均分配金額に基づいて判定されてもよく、例えば、紅包金額として使用するべく、平均分配金額をランダムに低減し得ることに留意されたい。ここで、紅包のカウントが奇数である際には、平均分配金額がランダムに低減された後に、最後の紅包金額を付与することにより、最後の紅包金額が固定されるという問題点を回避することができる。従って、違反者が、この規則性を使用することにより、違法なアクションを実行することが防止される。
【００９４】
紅包金額のサブセットが二つの紅包金額を含んでいるケースにおいては、以上は、二つの紅包金額を判定する一つの方法を提供しているに過ぎず、且つ、本出願のその他の実装形態においては、この代わりに、紅包金額のサブセット内の二つの紅包金額は、図２に示されているステップを通じて判定され得ることに留意されたい。即ち、方法は、図２に示されているステップにおける平均値を平均分配金額によって置換すると共に乱数を紅包金額によって置換するだけで、適用可能である。
【００９５】
紅包金額のそれぞれのサブセット内の一つ又は二つの紅包金額が紅包金額のサブセット内の一つ又は二つの紅包金額を判定する方法（例えば、図２のステップ）に従って判定された後に、そのカウントの紅包の紅包金額を取得することができる。
【００９６】
任意選択により、ステップ４４０が実行された後に、以下のステップを更に実行することができる。
【００９７】
ステップａ：紅包の合計金額及び特定数の紅包の紅包金額に基づいて剰余金額を判定する。
【００９８】
特定数の紅包の紅包金額の合計、即ち、送信される「紅包」の金額の合計、は、通常、紅包の合計金額に等しくない。この結果、資金損失の問題が生じる。問題点を解決するべく、本出願においては、紅包の合計金額及び特定数の紅包の紅包金額に基づいて、剰余金額を判定することができる。例えば、剰余金額は、紅包の合計金額と特定数の紅包の紅包金額との間の差を算出することにより、判定することができる。例えば、上述の例において、紅包の合計金額が１００ＲＭＢである際に、１０個の紅包金額の合計が９０ＲＭＢであると仮定すれば、剰余金額は、１０ＲＭＢである。
【００９９】
実際の適用の際には、この代わりに、剰余金額の判定の効率を改善し得るように、図２のステップが実行される際に、剰余金額を判定し得ることは、当然である。一例においては、剰余金額が、紅包の合計金額となるように初期化されてもよく、且つ、その後に、紅包金額のサブセット内の一つ又は二つの紅包金額が判定された後に、毎回、剰余金額が、剰余金額と紅包金額との間の差に更新されるか、或いは、剰余金額が、剰余金額と二つの紅包金額の合計との間の差に更新されている。紅包金額のすべてのサブセット内の紅包金額が判定された後に、更新済みの剰余金額が最終的な剰余金額であることを理解されたい。
【０１００】
ステップｂ：剰余金額をスプリットする。
【０１０１】
一実装形態においては、剰余金額を紅包のカウントに等しいいくつかのサブ数にスプリットすることができる。例えば、上述の例においては、剰余金額が１０ＲＭＢであり、且つ、紅包のカウントが１０である際に、スプリットの後に取得されるサブ数は、１０個の１ＲＭＢであってよい。実際の適用の際には、この代わりに、剰余金額は、別の特定数のサブ数にスプリットされてもよく、且つ、サブ数が異なり得ることは、当然である。これは、本出願においては、制限されていない。
【０１０２】
ステップｃ：特定数の更新済みの紅包金額を取得するべく、スプリットされた剰余金額を特定数の紅包金額に重畳する。
【０１０３】
例えば、紅包の合計金額が１０であり、紅包のカウントが１０であり、且つ、１０個の取得される紅包金額が、それぞれ、１．２、０．７、１．１、０．８、１．３、０．６、１．５、０．４、１．０、及び０．９である、と仮定すれば、剰余金額は、０．５であってよい。０．５という剰余金額は、１０個の０．０５にスプリットされ、且つ、１０個の更新済みの紅包金額は、１．２５、０．７５、１．１５、０．８５、１．３５、０．６５、１．５５、０．４５、１．０５、及び０．９５であってよい。
【０１０４】
スプリットされた剰余金額を特定数の紅包の紅包金額に重畳することにより、資金損失を回避することができる。
【０１０５】
任意選択により、ステップ４４０が実行された後に、或いは、ステップｃが実行された後に、以下のステップを更に実行することができる。
【０１０６】
ステップｘ：特定数の紅包の紅包金額を再ソートする。
【０１０７】
ここでは、紅包金額がそのサイズの順序で保存されることが防止されるように、且つ、これに加えて、紅包の合計金額及び紅包金額のカウントが、それぞれ、同一である際に、二つ以上の連続的なインスタンスにおいて分割されたそのカウントの紅包の紅包金額の順序が一貫性を有していないことを保証し得るように、特定数の紅包の紅包金額を任意の順序で再ソートすることができる。
【０１０８】
ステップｙ：そのカウントの紅包の再ソート済みの紅包金額をリストに保存する。
【０１０９】
実際の適用の際には、この代わりに、そのカウントの紅包の再ソート済みの紅包金額は、別の形態のストレージユニット内において保存され得ることは、当然である。これは、本出願においては、制限されていない。
【０１１０】
或いは、この代わりに、ステップｘ及びステップｙにおける紅包のカウントの紅包金額は、特定数の更新済みの紅包金額を意味し得ることに留意されたい。
【０１１１】
ステップ４５０：受信者クライアントによって送信された第二要求を受け取る。
【０１１２】
第二要求は、受信者ユーザの身元情報（例えば、受信者ユーザのアカウントに関する情報又はこれに類似したもの）を含むことができる。
【０１１３】
ステップ４６０：第二要求に従って、そのカウントの紅包の紅包金額のうちのターゲット金額を受信者クライアントに分配する。
【０１１４】
ここで、ターゲット金額は、そのカウントの紅包の紅包金額のうちの任意の紅包金額を意味していてもよく、或いは、この代わりに、そのカウントの紅包の更新済み紅包金額のうちの任意の紅包金額を意味していてもよい。
【０１１５】
例えば、第二要求を受け取った後に、サービスエンドは、リストからターゲット金額を読み取ってもよく、且つ、次いで、ターゲット金額を受信者クライアントに分配してもよい。
【０１１６】
図３に示されている「紅包」を送信するシナリオにおいて本出願において提供されるコンピュータシステムにおいて実装される乱数生成方法の適用について説明するべく、本出願は、以下の特定の実装形態を提供している。
【０１１７】
図５は、図３に示されているシナリオにおいて紅包金額を生成する別の方法のフローチャートである。図５に示されているように、方法は、具体的には、以下のステップを含むことができる。
【０１１８】
ステップ５１０：送信者クライアントによって送信された第一要求を受け取る。
【０１１９】
任意選択により、第一要求を受け取る前に、最小分配金額（例えば、０．０１ＲＭＢ）を予め設定することができる。
【０１２０】
第一要求は、紅包の合計金額及び紅包のカウント（ｃｏｕｎｔ）を含むことができる。
【０１２１】
ステップ５２０：紅包のカウントが１であるかどうかを判定し、且つ、「はい」である場合に、ステップ５３０を実行し、且つ、「いいえ」である場合には、ステップ５４０を実行する。
【０１２２】
ステップ５３０：紅包の合計金額をリストに出力する。
【０１２３】
ステップ５４０：紅包の合計金額が、紅包のカウント×予め設定された最小分配金額に等しいかどうかを判定し、「はい」である場合に、ステップ５５０を実行し、且つ、「いいえ」である場合には、ステップ５６０を実行する。
【０１２４】
ステップ５５０：平均値分配アルゴリズムを使用することにより、紅包の合計金額を紅包のカウントに等しいいくつかの最小分配金額に分割し、且つ、最小分配金額をリストに出力する。
【０１２５】
ステップ５６０：紅包金額の平均分配金額、最大差倍数、ステップ差、及び偏差範囲を算出し、且つ、剰余金額を紅包の合計金額となるように初期化する。
【０１２６】
ここで、平均分配金額を算出する方法については、ステップ１２０又は４２０を参照されたい、又、紅包金額の最大差倍数、ステップ差、及び偏差範囲については、ステップ２１０〜ステップ２５０を参照されたい。従って、詳細に関する再度の説明は、省略する。
【０１２７】
ステップ５７０：そのカウントの紅包の紅包金額が判定されているかどうかを判定し、「いいえ」である場合には、ステップ５８０を実行し、且つ、「はい」である場合には、ステップ５１６０を実行する。
【０１２８】
ステップ５８０：現時点において判定されている紅包金額が最後の紅包金額であるかどうかを判定し、「はい」である場合には、ステップ５９０を実行し、且つ、「いいえ」である場合には、ステップ５１２０を実行する。
【０１２９】
ステップ５９０：平均分配金額をランダムに低減する。
【０１３０】
ステップ５１００：平均分配金額のランダムな低減の結果及び予め設定された最小分配金額に基づいて最後の紅包金額を判定する。
【０１３１】
ステップ５１１０：最後の紅包金額をリストに出力し、且つ、剰余金額を剰余金額と最後の紅包金額との間の差となるように更新する。
【０１３２】
ステップ５１２０：現時点の偏差として、ステップ５６０において算出された偏差範囲から値をランダムに選択する。
【０１３３】
ステップ５１３０：ステップ５６０において算出された最大差倍数及びステップ差、第一偏差、及び現時点のステップサイズに基づいて、一つの紅包金額を算出する。
【０１３４】
ここで、一つの紅包金額を算出する方法については、ステップ３７０を参照されたい。
【０１３５】
ステップ５１４０：平均分配金額及び一つの紅包金額に基づいて、別の紅包金額を算出する。
【０１３６】
ここで、別の紅包金額を算出する方法については、ステップ３８０を参照されたい。
【０１３７】
ステップ５１５０：剰余金額を剰余金額と二つの紅包金額の合計との間の差になるように更新し、且つ、一つの紅包金額及び他方の紅包金額をリストに追加する。
【０１３８】
ステップ５１６０：剰余金額が０超であるかどうかを判定し、「はい」である場合に、ステップ５１７０を実行し、且つ、「いいえ」である場合には、ステップ５１８０を実行する。
【０１３９】
ステップ５１７０：剰余金額をスプリットし、且つ、そのカウントの紅包の更新済みの紅包金額を取得するべく、スプリットの結果として得られた剰余金額をそのカウントの紅包の紅包金額に重畳する。
【０１４０】
ここで、剰余金額をスプリットする方法及びスプリットされた剰余金額を重畳する方法については、ステップＢ及びステップＣ或いはステップｂ及びステップｃを参照されたい。
【０１４１】
ステップ５１８０：そのカウントの紅包の紅包金額又はそのカウントの紅包の更新済みの紅包金額を再ソートする。
【０１４２】
ステップ５１９０：受信者クライアントによって送信された第二要求を受け取る。
【０１４３】
ステップ５２００：そのカウントの紅包の紅包金額又はそのカウントの紅包の更新済みの紅包金額うちのターゲット金額を受信者クライアントに分配する。
【０１４４】
本発明の上述の実施形態は、以下のような技術的効果を有する。
【０１４５】
１）紅包金額のサブセット内の二つの紅包金額の合計及び商を定義することにより、分割された紅包金額の制御を実装することができる。
【０１４６】
２）剰余金額をスプリットし、且つ、スプリットされた剰余金額をそのカウントの紅包の紅包金額に重畳することにより、資金損失が生じないことを保証することが可能であり、且つ、これに加えて、相対的に均一な分布を保証することもできる。
【０１４７】
３）そのカウントの紅包の紅包金額を再ソートすることにより、そのカウントの紅包の紅包金額がそのサイズの順序で保存されることを防止することができる。
【０１４８】
４）紅包のカウントが奇数である際に、平均分配金額がランダムに低減された後に最後の紅包金額を付与することにより、最後の紅包金額が固定されるという問題点を回避することが可能であり、且つ、従って、違反者が、この規則性を使用することにより、違法なアクションを実行することが防止される。
【０１４９】
本出願において提供されるコンピュータシステムにおいて実装される乱数生成方法は、「紅包」を送信するシナリオに限定されるものではなく、例えば、ビジネス活動における金額の分配などの、その他のシナリオにおいても実装され得ることは、当然であり、且つ、これは、本出願においては、制限されていない。
【０１５０】
コンピュータシステムにおいて実装される乱数生成方法に対応する方式により、本出願の一実施形態は、コンピュータシステムにおいて実装される乱数生成装置を更に提供している。例えば、図６に示されているように、装置は、
第一要求を受け取るように構成された受信ユニット６０１であって、第一要求は、生成対象である乱数の合計及びカウントを含む、受信ユニットと、
受信ユニット６０１によって受け取られた合計及びカウントに基づいて平均値を判定するように構成された判定ユニット６０２と、
生成対象の特定数の乱数を複数のサブセットに分割するように構成された分割ユニット６０３であって、サブセットのそれぞれは、一つ又は二つの乱数を含み、且つ、サブセットが二つの乱数を含んでいる際に、二つの乱数の合計は、平均値の２倍であり、且つ、二つの乱数の商は、予め設定された閾値である、分割ユニットと、
を含む。
【０１５１】
判定ユニット６０２は、特定数の乱数を取得するべく、複数のサブセットのそれぞれ内の一つ又は二つの乱数を判定するように更に構成されている。
【０１５２】
任意選択により、判定ユニット６０２は、
カウントに基づいてサイクルインターバルを判定し、
予め設定された閾値に基づいて分配係数を判定し、
平均値及び分配係数に基づいて最大差倍数を判定し、
最大差倍数、平均値、及びサイクルインターバルに基づいてステップ差を判定し、
ステップ差に基づいて乱数の偏差範囲を判定する、
ように更に構成されている。
【０１５３】
判定ユニット６０２は、具体的には、
偏差範囲内の第一偏差を判定し、
最大差倍数、ステップ差、現時点のステップサイズ、及び第一偏差に基づいて、二つの乱数のうちの第一乱数を判定し、且つ、
平均値及び第一乱数に基づいて、二つの乱数のうちの第二乱数を判定する、
ように構成されている。
【０１５４】
任意選択により、判定ユニット６０２は、
平均値をランダムに低減し、且つ、
平均値のランダムな低減の結果及び予め設定された最小乱数に基づいて、第二サブセット内の一つの乱数を判定する、
ように更に構成されている。
【０１５５】
任意選択により、装置は、スプリットユニット６０３及び重畳ユニット６０４を更に含む。
【０１５６】
判定ユニット６０２は、合計及び特定数の乱数に基づいて剰余数を判定するように更に構成されている。
【０１５７】
スプリットユニット６０３は、判定ユニット６０２によって判定された剰余数をスプリットするように構成されている。
【０１５８】
重畳ユニット６０４は、特定数の更新済みの乱数を取得するべく、スプリットユニット６０３による剰余数のスプリットの結果を特定数の乱数に重畳するように構成されている。
【０１５９】
任意選択により、装置は、
特定数の乱数を再ソートするように構成されたソートユニット６０５と、
ソートユニット６０５によって再ソートされた特定数の乱数をリストに保存するように構成されたストレージユニット６０６と、
を更に含む。
【０１６０】
本出願のこの実施形態における装置の機能モジュールの機能は、上述の方法実施形態におけるステップを通じて実装されてもよく、且つ、従って、本明細書においては、本出願において提供される装置の特定の動作プロセスに関する説明は、省略する。
【０１６１】
本出願のこの実施形態において提供されるコンピュータシステムにおいて実装される乱数生成装置においては、受信ユニット６０１が、第一要求を受け取り、この場合に、第一要求は、生成対象の乱数の合計及びカウントを含み、判定ユニット６０２が、合計及びカウントに基づいて平均値を判定し、分割ユニット６０３が、生成対象の特定数の乱数を複数のサブセットに分割し、且つ、判定ユニット６０２が、特定数の乱数を取得するべく、複数のサブセットのそれぞれ内の一つ又は二つの乱数を判定している。この結果、生成された乱数を制御するという目的が実現されている。
【０１６２】
当業者は、一つ又は複数の実施形態において、本開示において開示されている機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組合せによって実装され得ることを認識するであろう。ソフトウェアを使用することによって実装される際に、機能は、コンピュータ可読媒体内において保存することも可能あり、或いは、転送のためのコンピュータ可読媒体内における一つ又は複数の命令又はコードとして使用することもできる。
【０１６３】
上述の特定の実装形態は、本開示の目的、技術的解決策、及び有益な効果について更に説明している。上述の説明は、本開示の特定の実装形態であるに過ぎず、且つ、本開示の保護範囲を限定することを意図したものではないことを理解されたい。本開示の技術的解決策に基づいて実施されるすべての変更、等価な置換、又は改善は、本開示の保護範囲に含まれるものとする。
【図１】
2019534499.tif 000004
【図２】
2019534499.tif 000005
【図３】
2019534499.tif 000006
【図４】
2019534499.tif 000007
【図５−１】
2019534499.tif 000008
【図５−２】
2019534499.tif 000009
【図６】
2019534499.tif 000010
【国際調査報告】
2019534499.tif 000011
2019534499.tif 000012
2019534499.tif 000013
2019534499.tif 000014