(57)【要約】【課題】べき分布データを容易に生成する。【解決手段】データ生成装置は、乱数を生成する乱数生成部と、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき分布データを生成するデータ生成部であって、乱数生成部が生成した乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配してＬ個の要素の各々に割り当てる第１の処理と、乱数生成部が生成した乱数に基づいて、Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理と、Ｌ個の要素から第１の要素に対して予め定められた一部の選択可能な要素のうちから、乱数生成部が生成した乱数に基づいて、１つの要素を第２の要素として選択する第３の処理と、第１の要素の値が１以上である場合に、第１の要素から第２の要素に要素の値を１つ移動する第４の処理と、第２の処理から第４の処理を繰り返し行う第５の処理とを実行するデータ生成部とを備える。【選択図】図１
2019053556.tif 000002
【特許請求の範囲】
【請求項１】
乱数を生成する乱数生成部と、
０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成部であって、
前記乱数生成部が生成した乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配して前記Ｌ個の要素の各々に割り当てる第１の処理と、
前記乱数生成部が生成した乱数に基づいて、前記Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理と、
前記Ｌ個の要素から前記第１の要素に対して予め定められた一部の選択可能な要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を第２の要素として選択する第３の処理と、
前記第１の要素の値が１以上である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する第４の処理と、
前記第２の処理から前記第４の処理を繰り返し行う第５の処理と
を実行するデータ生成部と
を備えることを特徴とするデータ生成装置。
【請求項２】
前記Ｌ個の要素は、Ｎ次元（ただしＮは２以上の整数）に配列された要素であり、
前記データ生成部は、
前記第１の処理において、前記乱数生成部が生成した乱数に基づいて、前記総数Ｍを分配して前記Ｎ次元に配列された要素の各々に割り当て、
前記第２の処理において、前記乱数生成部が生成した乱数に基づいて、前記Ｎ次元に配列された要素のうちから１つの要素を前記第１の要素として選択し、
前記第３の処理において、前記Ｎ次元の要素番号の正負の方向のうちの各次元で予め定められた１つの方向に、前記各次元の前記要素番号を１以内移動させて選択可能な複数の要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を前記第２の要素として選択する
ことを特徴とする請求項１に記載のデータ生成装置。
【請求項３】
前記データ生成部は、前記第３の処理において、前記第２の要素として選択された前記１つの要素の要素番号が、前記Ｎ次元に配列された要素に設定された要素番号の範囲から外れた場合に、前記乱数生成部が生成した乱数に基づいて、前記Ｎ次元に配列された要素のうちから、前記第１の要素とは異なる１つの要素を前記第２の要素として再選択する
ことを特徴とする請求項２に記載のデータ生成装置。
【請求項４】
前記各次元の前記要素番号を１以内移動させて選択可能な複数の要素は、前記各次元で予め定められた１つの方向だけ、前記要素番号を１つ移動させたＮ個の要素であり、
前記データ生成部は、前記第３の処理において、前記Ｎ個の要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を前記第２の要素として選択する
ことを特徴とする請求項２又は請求項３に記載のデータ生成装置。
【請求項５】
前記Ｎは、２であり、
前記データ生成部は、前記第３の処理において、前記各次元で予め定められた１つの方向だけ前記要素番号を１つ移動させた２個の要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を前記第２の要素として選択する
ことを特徴とする請求項４に記載のデータ生成装置。
【請求項６】
前記データ生成部は、前記第４の処理において、前記第１の要素の値が０である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する処理を実行しない
ことを特徴とする請求項１から請求項５のいずれか一項に記載のデータ生成装置。
【請求項７】
乱数生成部が、乱数を生成する乱数生成ステップと、
データ生成部が、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成ステップと
を含み、
データ生成ステップには、
前記データ生成部が、前記乱数生成ステップにより生成された乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配して前記Ｌ個の要素の各々に割り当てる第１の処理ステップと、
前記データ生成部が、前記乱数生成ステップにより生成された乱数に基づいて、前記Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理ステップと、
前記データ生成部が、前記Ｌ個の要素から前記第１の要素に対して予め定められた一部の選択可能な要素のうちから、前記乱数生成ステップにより生成された乱数に基づいて、１つの要素を第２の要素として選択する第３の処理ステップと、
前記データ生成部が、前記第１の要素の値が１以上である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する第４の処理ステップと、
前記データ生成部が、前記第２の処理ステップから前記第４の処理ステップを繰り返し行う第５の処理ステップと
が含まれることを特徴とするデータ生成方法。
【請求項８】
乱数を生成する乱数生成部と、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成部とを備えるコンピュータに、
前記乱数生成部が生成した乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配して前記Ｌ個の要素の各々に割り当てる第１の処理と、
前記乱数生成部が生成した乱数に基づいて、前記Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理と、
前記Ｌ個の要素から前記第１の要素に対して予め定められた一部の選択可能な要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を第２の要素として選択する第３の処理と、
前記第１の要素の値が１以上である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する第４の処理と、
前記第２の処理から前記第４の処理を繰り返し行う第５の処理と
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ生成装置、データ生成方法、及びプログラムに関する。
【背景技術】
【０００２】
都市人口、高所得者の収入、地震の大きさと発生頻度、ウェブページのハイパーリンクの数などの様々な自然現象や社会現象が、べき乗則に従うことが知られており、このようなべき乗則を利用する技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３１８８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のようにべき乗則は、自然現象や社会現象を解析する上で、近年注目されており、べき乗則に従ったデータ（以下、べき分布データという）を容易に生成する技術が求められている。
【０００５】
本発明は、上記問題を解決すべくなされたもので、その目的は、べき分布データを容易に生成することができるデータ生成装置、データ生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、本発明の一態様は、乱数を生成する乱数生成部と、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成部であって、前記乱数生成部が生成した乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配して前記Ｌ個の要素の各々に割り当てる第１の処理と、前記乱数生成部が生成した乱数に基づいて、前記Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理と、前記Ｌ個の要素から前記第１の要素に対して予め定められた一部の選択可能な要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を第２の要素として選択する第３の処理と、前記第１の要素の値が１以上である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する第４の処理と、前記第２の処理から前記第４の処理を繰り返し行う第５の処理とを実行するデータ生成部とを備えることを特徴とするデータ生成装置である。
【０００７】
また、本発明の一態様は、上記のデータ生成装置において、前記Ｌ個の要素は、Ｎ次元（ただしＮは２以上の整数）に配列された要素であり、前記データ生成部は、前記第１の処理において、前記乱数生成部が生成した乱数に基づいて、前記総数Ｍを分配して前記Ｎ次元に配列された要素の各々に割り当て、前記第２の処理において、前記乱数生成部が生成した乱数に基づいて、前記Ｎ次元に配列された要素のうちから１つの要素を前記第１の要素として選択し、前記第３の処理において、前記Ｎ次元の要素番号の正負の方向のうちの各次元で予め定められた１つの方向に、前記各次元の前記要素番号を１以内移動させて選択可能な複数の要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を前記第２の要素として選択することを特徴とする。
【０００８】
また、本発明の一態様は、上記のデータ生成装置において、前記データ生成部は、前記第３の処理において、前記第２の要素として選択された前記１つの要素の要素番号が、前記Ｎ次元に配列された要素に設定された要素番号の範囲から外れた場合に、前記乱数生成部が生成した乱数に基づいて、前記Ｎ次元に配列された要素のうちから、前記第１の要素とは異なる１つの要素を前記第２の要素として再選択することを特徴とする。
【０００９】
また、本発明の一態様は、上記のデータ生成装置において、前記各次元の前記要素番号を１以内移動させて選択可能な複数の要素は、前記各次元で予め定められた１つの方向だけ、前記要素番号を１つ移動させたＮ個の要素であり、前記データ生成部は、前記第３の処理において、前記Ｎ個の要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を前記第２の要素として選択することを特徴とする。
【００１０】
また、本発明の一態様は、上記のデータ生成装置において、前記Ｎは、２であり、前記データ生成部は、前記第３の処理において、前記各次元で予め定められた１つの方向だけ前記要素番号を１つ移動させた２個の要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を前記第２の要素として選択することを特徴とする。
【００１１】
また、本発明の一態様は、上記のデータ生成装置において、前記データ生成部は、前記第４の処理において、前記第１の要素の値が０である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する処理を実行しないことを特徴とする。
【００１２】
また、本発明の一態様は、乱数生成部が、乱数を生成する乱数生成ステップと、データ生成部が、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成ステップとを含み、データ生成ステップには、前記データ生成部が、前記乱数生成ステップにより生成された乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配して前記Ｌ個の要素の各々に割り当てる第１の処理ステップと、前記データ生成部が、前記乱数生成ステップにより生成された乱数に基づいて、前記Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理ステップと、前記データ生成部が、前記Ｌ個の要素から前記第１の要素に対して予め定められた一部の選択可能な要素のうちから、前記乱数生成ステップにより生成された乱数に基づいて、１つの要素を第２の要素として選択する第３の処理ステップと、前記データ生成部が、前記第１の要素の値が１以上である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する第４の処理ステップと、前記データ生成部が、前記第２の処理ステップから前記第４の処理ステップを繰り返し行う第５の処理ステップとが含まれることを特徴とするデータ生成方法である。
【００１３】
また、本発明の一態様は、乱数を生成する乱数生成部と、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成部とを備えるコンピュータに、前記乱数生成部が生成した乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配して前記Ｌ個の要素の各々に割り当てる第１の処理と、前記乱数生成部が生成した乱数に基づいて、前記Ｌ個の要素のうちから１つの要素を第１の要素として選択する第２の処理と、前記Ｌ個の要素から前記第１の要素に対して予め定められた一部の選択可能な要素のうちから、前記乱数生成部が生成した乱数に基づいて、１つの要素を第２の要素として選択する第３の処理と、前記第１の要素の値が１以上である場合に、前記第１の要素から前記第２の要素に前記要素の値を１つ移動する第４の処理と、前記第２の処理から前記第４の処理を繰り返し行う第５の処理とを実行させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、べき分布データを容易に生成することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態によるデータ生成装置の一例を示す機能ブロック図である。
【図２】本実施形態における配列記憶部のデータ例を示す図である。
【図３】本実施形態における２次元配列の要素の値における移動先候補例を示す図である。
【図４】本実施形態によるデータ生成装置の動作の一例を示すフローチャートである。
【図５】本実施形態におけるべき分布データの生成処理の初期値の一例を示す図である。
【図６】本実施形態におけるべき分布データの生成過程の一例を示す図である。
【図７】本実施形態におけるべき分布データの生成結果の一例を示す図である。
【図８】生成したべき分布データの分布の一例（両対数グラフ）を示す第２の図である。
【図９】本実施形態の分布データの生成処理における繰り返し回数とべき指数との関係の一例を示す図である。
【図１０】本実施形態における２次元配列の要素の値における移動先候補の第１の変形例を示す図である。
【図１１】本実施形態における２次元配列の要素の値における移動先候補の第２の変形例を示す図である。
【図１２】本実施形態における３次元配列の要素の値における移動先候補例を示す図である。
【図１３】本実施形態における３次元配列の要素の値における移動先候補の変形例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態によるデータ生成装置について、図面を参照して説明する。
図１は、本実施形態によるデータ生成装置１の一例を示す機能ブロック図である。
図１に示すように、データ生成装置１は、乱数生成部１１と、記憶部２０と、制御部３０とを備えている。データ生成装置１は、べき乗則に従ったデータであるべき分布データを生成する。
【００１７】
乱数生成部１１は、乱数を生成する乱数生成器である。乱数生成部１１は、例えば、ハードウェア又はソフトウェアを利用して、疑似乱数を生成するものであってもよい。
記憶部２０は、データ生成装置１が利用する各種情報を記憶する。記憶部２０は、配列記憶部２１と、選択要素記憶部２２とを備えている。
【００１８】
配列記憶部２１は、べき分布データを生成するための配列データを記憶するとともに、最終的には、生成されたべき分布データを記憶する。配列記憶部２１は、例えば、２次元配列された要素のデータを記憶する。ここで、２次元配列は、Ｎ次元配列の一例であり、Ｎは、例えば、２以上の整数である。また、配列記憶部２１が記憶する２次元配列の各要素は、０以上の整数の値を有する。ここで、図２を参照して、配列記憶部２１が記憶するデータ例について説明する。
【００１９】
図２は、本実施形態における配列記憶部２１のデータ例を示す図である。
図２に示すように、配列記憶部２１は、要素番号Ｉ＝１〜３０、及び要素番号Ｊ＝１〜３０の合計９００個（Ｌ個の一例、ただしＬは正の整数）の要素を有している。すなわち、配列記憶部２１は、要素数Ｉ＝３０×要素数Ｊ＝３０の２次元配列データを記憶する。
【００２０】
なお、図２に示す例は、９００個の要素に対して、総数９０００（総数Ｍの一例、ただし、Ｍは正の整数）をランダムに分配して割り当てた場合（９００個の要素の初期値）の一例を示している。
例えば、要素番号Ｉ＝１及び要素番号Ｊ＝１のデータＤ（１，１）の値（要素の値）が、“９”であることを示している。また、要素番号Ｉ＝２及び要素番号Ｊ＝１のデータＤ（２，１）の値（要素の値）が、“１１”であることを示している。
【００２１】
図１の説明に戻り、選択要素記憶部２２は、べき分布データを生成する際に、要素の値を移動するために選択される移動元の要素（第１の要素）を示す情報、及び移動先の要素（第２の要素）を示す情報を記憶する。ここで、移動元の要素（第１の要素）を示す情報、及び移動先の要素（第２の要素）を示す情報は、例えば、２次元配列を指定する、要素番号Ｉの値、及び要素番号Ｊの値である。
【００２２】
制御部３０は、例えば、ＣＰＵ（Central Processing Unit）などを含むプロセッサであり、データ生成装置１を統括的に制御する。制御部３０は、データ生成部３１を備えている。
データ生成部３１は、上述したＬ個の要素を利用して、べき分布データを生成する。ここで、Ｌ個の要素は、Ｎ次元に配列された要素であり、本実施形態では、３０×３０の２次元配列の要素として説明する。また、べき分布データを生成する処理を理解し易くするために、本実施形態では、２次元配列の各要素を「壺」とし、各要素の値を「壺の中のボールの数」として説明する。
データ生成部３１は、以下の処理により、べき分布データを生成する。
【００２３】
（１）データ生成部３１は、例えば、３０×３０の２次元配列の要素に、乱数生成部１１が生成した乱数に基づいて、総数９０００を分配して、２次元に配列された要素（９００個の要素）の各々に割り当てる（第１の処理）。すなわち、データ生成部３１は、９００個の壺に、総数９０００個のボールを、ランダムに分配して割り当てる。データ生成部３１は、各要素の値を、上述した図２に示すように、配列記憶部２１に記憶させる。
【００２４】
（２）データ生成部３１は、乱数生成部１１が生成した乱数に基づいて、９００個の要素のうちから１つの要素を移動元の要素（第１の要素）として選択する（第２の処理）。すなわち、データ生成部３１は、２次元に配列された壺のうちから１つの壺を移動元の壺としてランダムに選択する。データ生成部３１は、選択した移動元の要素（移動元の壺）を示す情報（要素番号Ｉの値、及び要素番号Ｊの値）を選択要素記憶部２２に記憶させる。
【００２５】
（３）データ生成部３１は、９００個の要素から選択元の要素に対して予め定められた一部の選択可能な要素のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する（第３の処理）。なお、選択元の要素には、予め移動先の候補として、予め決められており、例えば、図３に示すように、２つの移動先候補（ＳＥ２１、ＳＥ２２）が定められている。
【００２６】
図３は、本実施形態における２次元配列の要素の値における移動先候補例を示す図である。
図３において、要素ＳＥ１は、移動元の要素（第１の要素）を示しており、要素ＳＥ２１及び要素ＳＥ２２は、移動先候補を示している。ここで、要素ＳＥ２１は、要素ＳＥ１をＤ（Ｉ＝ｉ，Ｊ＝ｊ）とした場合に、要素番号Ｉを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ））であり、要素ＳＥ２２は、要素番号Ｊを＋１だけ移動した要素（Ｄ（ｉ，ｊ＋１））である。データ生成部３１は、この移動先候補である要素ＳＥ２１及び要素ＳＥ２２のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する。
【００２７】
このように、データ生成部３１は、第３の処理において、２次元の要素番号の正負の方向のうちの各次元で予め定められた１つの方向に、各次元の要素番号（Ｉ、Ｊ）を１以内移動させて選択可能な複数の要素のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素として選択する。すなわち、データ生成部３１は、各次元で予め定められた１つの方向だけ要素番号を１つ移動させた２個の壺（要素ＳＥ２１及び要素ＳＥ２２）のうちから、１つの壺を移動先の壺としてランダムに選択する。
なお、データ生成部３１は、選択した移動先の要素（移動先の壺）を示す情報（要素番号Ｉの値、及び要素番号Ｊの値）を選択要素記憶部２２に記憶させる。
【００２８】
（４）データ生成部３１は、移動元の要素の値が１以上である場合に、移動元の要素から移動先の要素に要素の値を１つ移動する（第４の処理）。データ生成部３１は、例えば、選択要素記憶部２２が記憶する移動元の要素を示す情報に基づいて、配列記憶部２１が記憶する移動元の要素の値を確認し、移動元の要素の値から“１”を減算する。そして、データ生成部３１は、選択要素記憶部２２が記憶する移動先の要素を示す情報に基づいて、配列記憶部２１が記憶する移動先の要素を特定し、移動先の要素の値に、“１”を加算する。すなわち、データ生成部３１は、移動元の壺から、ボールを１つ取り出し、取り出したボールを移動先の壺に入れて移動する処理を実行する。
【００２９】
なお、データ生成部３１は、移動元の要素の値（壺の中のボールの数）が、０（ゼロ）である場合に、上述した要素の値（壺の中のボール）の移動を実行しない。
また、データ生成部３１は、移動先の要素（移動先の壺）として選択された１つの要素の要素番号（Ｉ又はＪ）が、２次元に配列された要素に設定された要素番号の範囲（例えば、１〜３０）から外れた場合に、移動先の要素（移動先の壺）を再選択する。この場合、データ生成部３１は、乱数生成部１１が生成した乱数に基づいて、２次元に配列された要素のうちから、移動元の要素（移動元の壺）とは異なる１つの要素を移動先の要素（移動先の壺）としてランダムに再選択する。なお、本実施形態によるべき分布データを生成する系は、外界からの流れのもとで方向付けされたリソース（ここでは、ボール）の配分がある開放系に対応する。
【００３０】
（５）データ生成部３１は、上述した（２）〜（４）の処理（第２の処理から第４の処理）を繰り返し実行する（第５の処理）。データ生成部３１は、例えば、（２）〜（４）の処理を所定の回数繰り返して実行する。
このように、データ生成部３１が、（１）〜（５）の処理を実行することにより、配列記憶部２１に記憶されているＬ個からなる要素の値が、べき分布データとして生成される。
【００３１】
次に、図４を参照して、本実施形態によるデータ生成装置１の動作について説明する。
図４は、本実施形態によるデータ生成装置１の動作の一例を示すフローチャートである。
【００３２】
図４において、まず、制御部３０のデータ生成部３１は、Ｌ個の要素に、総数Ｍを乱数により割り当てる（ステップＳ１０１）。データ生成部３１は、例えば、９００個の壺（３０×３０の壺）に、総数９０００個のボールを、ランダムに分配して割り当てる。データ生成部３１は、各要素の値を、図２に示すように、配列記憶部２１に記憶させる。
【００３３】
次に、データ生成部３１は、Ｌ個の要素のうちから乱数により移動元の要素を選択する（ステップＳ１０２）。データ生成部３１は、例えば、９００個の壺（３０×３０の壺）のうちからランダムに移動元の要素（移動元の壺）を選択する。データ生成部３１は、選択した移動元の要素（移動元の壺）を示す情報（要素番号Ｉの値、及び要素番号Ｊの値）を選択要素記憶部２２に記憶させる。
【００３４】
次に、データ生成部３１は、移動元の要素に対して予め定められた複数の要素のうちから乱数により移動先の要素を選択する（ステップＳ１０３）。データ生成部３１は、例えば、図３に示すような、移動元の要素ＳＥ１（移動元の壺）の１つ右横の要素ＳＥ２１（Ｄ（ｉ＋１，ｊ））及び１つ上の要素ＳＥ２２（Ｄ（ｉ，ｊ＋１））のうちから、ランダムに１つの要素（壺）を移動先の要素（移動先の壺）として選択する。データ生成部３１は、選択した移動先の要素（移動先の壺）を示す情報（要素番号Ｉの値、及び要素番号Ｊの値）を選択要素記憶部２２に記憶させる。
【００３５】
次に、データ生成部３１は、移動元の要素の値（移動元の壺の中のボール数）が、１以上であるか否かを判定する（ステップＳ１０４）。データ生成部３１は、選択要素記憶部２２が記憶する移動先の要素（移動先の壺）を示す情報に基づいて、移動元の要素（移動元の壺）を参照し、移動元の要素の値（移動元の壺の中のボール数）が、１以上であるか否かを判定する。データ生成部３１は、移動元の要素の値（移動元の壺の中のボール数）が、１以上である場合（ステップＳ１０４：ＹＥＳ）に、処理をステップＳ１０５に進める。また、データ生成部３１は、移動元の要素の値（移動元の壺の中のボール数）が、１以上でない（０である）場合（ステップＳ１０４：ＮＯ）に、処理をステップＳ１０２に戻す。すなわち、データ生成部３１は、移動元の要素の値（移動元の壺の中のボール数）が、０である場合に、移動元の要素（移動元の壺）から移動先の要素（移動先の壺）に要素の値（ボール）を１つ移動する処理を実行しない。
【００３６】
また、ステップＳ１０５において、データ生成部３１は、移動先の要素（移動先の壺）が範囲外であるか否かを判定する。すなわち、データ生成部３１は、移動先の要素（移動先の壺）として選択された１つの要素の要素番号（Ｉ又はＪ）が、２次元に配列された要素に設定された要素番号の範囲（例えば、１〜３０）外であるか否かを判定する。データ生成部３１は、移動先の要素（移動先の壺）が範囲外である場合（ステップＳ１０５：ＹＥＳ）に、処理をステップＳ１０８に進める。また、データ生成部３１は、移動先の要素（移動先の壺）が範囲外でない（範囲内である）場合（ステップＳ１０５：ＮＯ）に、処理をステップＳ１０６に進める。
【００３７】
ステップＳ１０６において、データ生成部３１は、移動元の要素（移動元の壺）から移動先の要素（移動先の壺）に要素の値（ボール）を１つ移動させる。すなわち、データ生成部３１は、移動元の要素の値から“１”を減算し、移動先の要素の値に、“１”を加算する。例えば、データ生成部３１は、移動元の壺から、ボールを１つ取り出し、取り出したボールを移動先の壺に入れて移動する処理を実行する。
【００３８】
次に、データ生成部３１は、所定の回数、実行したか否かを判定する（ステップＳ１０７）。データ生成部３１は、上述した処理を所定の回数、実行した場合（ステップＳ１０７：ＹＥＳ）に、処理を終了させる。また、データ生成部３１は、上述した処理を所定の回数、実行していない場合（ステップＳ１０７：ＮＯ）に、処理をステップＳ１０２に戻して、ステップＳ１０２からステップＳ１０７の処理を繰り返す。
【００３９】
また、ステップＳ１０８において、データ生成部３１は、Ｌ個の要素のうちから乱数により移動先の要素を再選択する。すなわち、データ生成部３１は、２次元に配列された要素（例えば、９００個の壺（３０×３０の壺））のうちから、移動元の要素（移動元の壺）とは異なる１つの要素を移動先の要素（移動先の壺）としてランダムに再選択する。データ生成部３１は、再選択した移動先の要素（移動先の壺）を示す情報（要素番号Ｉの値、及び要素番号Ｊの値）を選択要素記憶部２２に記憶させる。ステップＳ１０８の処理後に、データ生成部３１は、処理をステップＳ１０６に進める。
【００４０】
次に、図５〜図１１を参照して、本実施形態によるデータ生成装置１によりべき分布データの生成結果の一例について説明する。
図５は、本実施形態におけるべき分布データの生成処理の初期値の一例を示す図である。この図において、横軸は、２次元配列における要素番号Ｉの値を示し、横軸は、２次元配列における要素番号Ｋの値を示している。また、この図において、●（黒丸）の大きさは、要素の値の大きさ（壺の中のボール数）を示している。
【００４１】
また、図５に示す例は、データ生成部３１が、３０×３０の２次元配列の要素（９００個の要素）に対して、総数９０００をランダムに分配して割り当てた場合（９００個の要素の初期値）の一例を示している。
【００４２】
また、図６は、本実施形態におけるべき分布データの生成過程の一例を示す第１の図である。この図において、横軸及び縦軸は、図５と同様であり、また、●（黒丸）の大きさは、図５と同様に、要素の値の大きさ（壺の中のボール数）を示している。
また、図６に示す例は、データ生成部３１が、上述した図４に示すステップＳ１０２からステップＳ１０７の処理を、２００万回繰り返した途中経過を示している。この図に示すように、データ生成部３１が、移動元の要素（移動元の壺）から移動先の要素（移動先の壺）に要素の値（ボール）を１つ移動させる処理を繰り返すことにより、要素の値（ボールの数）が、紙面右上（Ｉ＝３０、Ｊ＝３０）に向って、偏って大きくなっている。
【００４３】
また、図７は、本実施形態におけるべき分布データの生成結果の一例を示す図である。この図において、横軸及び縦軸は、図５及び図６と同様であり、また、●（黒丸）の大きさは、図５及び図６と同様に、要素の値の大きさ（壺の中のボール数）を示している。
また、図８に示す例は、データ生成部３１が、上述した図４に示すステップＳ１０２からステップＳ１０７の処理を、８００万回繰り返した生成結果を示している。この図に示すように、データ生成部３１が、移動元の要素（移動元の壺）から移動先の要素（移動先の壺）に要素の値（ボール）を１つ移動させる処理をさらに繰り返すことにより、要素の値（ボールの数）のよるべき分布データが生成されたものを示している。
【００４４】
また、図８は、生成したデータの分布の一例を示す図である。
また、図８に示すグラフは、壷（要素）に対する壷の中のボール数（要素の値）を降順に、ボール数の分布を両対数グラフで示している（波形Ｗ１参照）。ここで、横軸が壺（要素、ボール数降順）を示し、壺の中のボール数（要素の値）を示し、横軸及び縦軸が対数スケールになっている。また、このグラフは、３０×３０の２次元配列の壺（９００個の壺）に対して、総数９０００のボールをランダムに分配して、上述した生成処理を３億回繰り返した場合のべき分布データの分布を示している。
図８の波形Ｗ１に示すように、生成したべき分布データは、両対数グラフにおいて、ほぼ直線になっており、データ生成装置１が、べき乗則に従ったデータ（べき分布データ）を適切に生成したことを示している。
【００４５】
また、図９は、本実施形態の分布データの生成処理における繰り返し回数とべき指数との関係の一例を示す図である。
図９に示すグラフにおいて、横軸は、繰り返し回数を示し、縦軸は、べき指数を示している。また、波形Ｗ２は、繰り返し回数とべき指数との関係を示している。波形Ｗ２に示すように、上述した本実施形態による生成処理の一例では、繰り返し回数が約５０００万回以上で、べき指数が一定になることを示している。
【００４６】
なお、上述した本実施形態では、データ生成部３１が、図３に示すように、２つの移動先候補（ＳＥ２１、ＳＥ２２）のうちから１つを移動先の要素として選択する例を説明したが、図１０に示すように、３つの移動先候補（ＳＥ２１、ＳＥ２２、ＳＥ２３）のうちから選択するようにしてもよい。
【００４７】
図１０は、本実施形態における２次元配列の要素の値における移動先候補の第１の変形例を示す図である。この図において、要素ＳＥ１は、移動元の要素（第１の要素）を示しており、要素ＳＥ２１、要素ＳＥ２２、及び要素２３は、移動先候補を示している。ここで、要素ＳＥ２１は、要素ＳＥ１をＤ（Ｉ＝ｉ，Ｊ＝ｊ）とした場合に、要素番号Ｉを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ））であり、要素ＳＥ２２は、要素番号Ｊを＋１だけ移動した要素（Ｄ（ｉ，ｊ＋１））である。また、要素ＳＥ２３は、要素番号Ｉ及び要素番号Ｊを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ＋１））である。データ生成部３１は、この３つの移動先候補のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択するようにしてもよい。
【００４８】
また、移動先候補は、図１１に示すように、右横の要素ＳＥ２１（Ｄ（ｉ＋１，ｊ））の代わりに、左横の要素ＳＥ２４（Ｄ（ｉ−１，ｊ））を用いてもよい。
図１１は、本実施形態における２次元配列の要素の値における移動先候補の第２の変形例を示す図である。この図において、要素ＳＥ１及び要素ＳＥ２２は、図３と同様である。要素ＳＥ２２及び要素ＳＥ２４は、移動先候補を示しており、要素ＳＥ２４は、要素番号Ｉを−１だけ移動した要素（Ｄ（ｉ−１，ｊ））である。データ生成部３１は、このような２つの移動先候補（要素ＳＥ２２及び要素ＳＥ２４）のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択するようにしてもよい。
【００４９】
また、上述した本実施形態では、２次元配列の要素を用いてべき分布データを生成する例を説明したが、３次元以上の配列の要素を用いてもよい。ここで、図１２及び図１３を参照して、３次元配列の要素の値における移動先候補の変形例について説明する。
図１２は、本実施形態における３次元配列の要素の値における移動先候補例を示す図である。この図において、要素ＳＥ１ａは、移動元の要素（第１の要素）を示しており、要素ＳＥ２１ａ、要素ＳＥ２２ａ、及び要素２３ａは、移動先候補を示している。ここで、要素ＳＥ２１ａは、要素ＳＥ１ａをＤ（Ｉ＝ｉ，Ｊ＝ｊ，Ｋ＝ｋ）とした場合に、要素番号Ｉを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ，ｋ））であり、要素ＳＥ２２ａは、要素番号Ｊを＋１だけ移動した要素（Ｄ（ｉ，ｊ＋１，ｋ））である。また、要素ＳＥ２３ａは、要素番号Ｋを＋１だけ移動した要素（Ｄ（ｉ，ｊ，ｋ＋１））である。データ生成部３１は、３次元配列の要素において、この３つの移動先候補のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択するようにしてもよい。
【００５０】
また、図１３は、本実施形態における３次元配列の要素の値における移動先候補の変形例を示す図である。この図において、要素ＳＥ１ａは、移動元の要素（第１の要素）を示しており、要素ＳＥ２１ａ〜要素２７ａは、移動先候補を示しており、要素ＳＥ２１ａ〜要素２３ａは、上述した図１２と同様である。また、要素ＳＥ２４ａは、要素番号Ｉ及びＪを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ＋１，ｋ））であり、要素ＳＥ２５ａは、要素番号Ｉ及びＫを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ，ｋ＋１））である。また、要素ＳＥ２６ａは、要素番号Ｊ及びＫを＋１だけ移動した要素（Ｄ（ｉ，ｊ＋１，ｋ＋１））であり、要素ＳＥ２７ａは、要素番号Ｉ、Ｊ、及びＫを＋１だけ移動した要素（Ｄ（ｉ＋１，ｊ＋１，ｋ＋１））である。データ生成部３１は、３次元配列の要素において、この７つの移動先候補のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択するようにしてもよい。
【００５１】
以上説明したように、本実施形態によるデータ生成装置１は、乱数を生成する乱数生成部１１と、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素（例えば、エレメント、ノードなど）を利用して、べき乗則に従ったデータであるべき分布データを生成するデータ生成部３１であって、第１の処理と、第２の処理と、第３の処理と、第４の処理と、第５の処理とを実行するデータ生成部３１とを備える。データ生成部３１は、第１の処理において、乱数生成部１１が生成した乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配してＬ個の要素の各々に割り当てる。データ生成部３１は、第２の処理において、乱数生成部１１が生成した乱数に基づいて、Ｌ個の要素のうちから１つの要素を移動元の要素（第１の要素）として選択する。データ生成部３１は、第３の処理において、Ｌ個の要素から移動元の要素に対して予め定められた一部の選択可能な要素（例えば、図３の要素ＳＥ２１及び要素ＳＥ２２）のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する。データ生成部３１は、第４の処理において、第１の要素の値が１以上である場合に、選択した移動元の要素から移動先の要素に要素の値を１つ移動する。データ生成部３１は、第５の処理において、第２の処理から第４の処理を繰り返し行う。
【００５２】
これにより、本実施形態によるデータ生成装置１は、図８〜図１１に示すように、べき分布データを容易に生成することができる。
なお、本実施形態によるデータ生成装置１では、例えば、都市人口、高所得者の収入、地震の大きさと発生頻度、ウェブページのハイパーリンクの数などの様々な自然現象や社会現象を解析する際のシミュレーションの初期データとして、生成したべき分布データを利用することができる。よって、本実施形態によるデータ生成装置１は、べき乗則となる現象を解析する際のシミュレーションの初期データを容易に生成することができる。したがって、本実施形態によるデータ生成装置１を用いることにより、例えば、コンピュータ間のネットワーク接続や都市間の人の移動などのシミュレーションが可能となり、例えば、ウィルス蔓延の影響範囲と、その抑制策の効果予測などを行うことができる。
【００５３】
また、本実施形態では、Ｌ個の要素は、Ｎ次元（ただしＮは２以上の整数）に配列された要素である。データ生成部３１は、第１の処理において、乱数生成部１１が生成した乱数に基づいて、総数Ｍを分配してＮ次元に配列された要素の各々に割り当てる。データ生成部３１は、第２の処理において、乱数生成部１１が生成した乱数に基づいて、Ｎ次元に配列された要素のうちから１つの要素を移動元の要素（第１の要素）として選択する。データ生成部３１は、第３の処理において、Ｎ次元の要素番号の正負の方向のうちの各次元で予め定められた１つの方向に、各次元の要素番号を１以内移動させて選択可能な複数の要素のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する。
これにより、本実施形態によるデータ生成装置１は、Ｎ次元に配列された要素を利用して、べき分布データを容易に生成することができる。
【００５４】
また、本実施形態では、データ生成部３１は、第３の処理において、移動先の要素（第２の要素）として選択された１つの要素の要素番号（例えば、Ｉ又はＪ）が、Ｎ次元に配列された要素に設定された要素番号の範囲（例えば、１〜３０の範囲）から外れた場合に、乱数生成部１１が生成した乱数に基づいて、Ｎ次元に配列された要素のうちから、移動元の要素（第１の要素）とは異なる１つの要素を移動先の要素（第２の要素）として再選択する。
これにより、本実施形態によるデータ生成装置１は、総数Ｍを増減することなく、べき分布データを適切に生成することができる。
【００５５】
また、本実施形態では、各次元の要素番号を１以内移動させて選択可能な複数の要素は、各次元で予め定められた１つの方向だけ、要素番号を１つ移動させたＮ個の要素（例えば、図３の要素ＳＥ２１及び要素ＳＥ２２の２個の要素（移動先候補の要素））である。データ生成部３１は、第３の処理において、Ｎ個の要素のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する。
これにより、移動先候補の数を次元数Ｎに制限することができるため、本実施形態によるデータ生成装置１は、第３の処理を簡略化することができる。よって、本実施形態によるデータ生成装置１は、Ｎ次元に配列された要素を利用して、べき分布データをさらに容易に生成することができる。
【００５６】
また、本実施形態では、上述したＮは、２であり、データ生成部３１は、第３の処理において、各次元で予め定められた１つの方向だけ要素番号を１つ移動させた２個の要素のうちから、乱数生成部１１が生成した乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する。
これにより、本実施形態によるデータ生成装置１は、２次元に配列された要素を利用して、べき分布データをさらに容易に生成することができる。
【００５７】
また、本実施形態では、データ生成部３１は、第４の処理において、移動元の要素（第１の要素）の値が０である場合に、移動元の要素（第１の要素）から移動先の要素（第２の要素）に要素の値を１つ移動する処理を実行しない。
これにより、本実施形態によるデータ生成装置１は、べき分布データを生成する処理をさらに簡略化することができる。
【００５８】
また、本実施形態によるデータ生成方法は、乱数生成部１１が、乱数を生成する乱数生成ステップと、データ生成部３１が、０以上の整数の値を有するＬ個（ただしＬは正の整数）の要素を利用して、べき分布データを生成するデータ生成ステップとを含む。データ生成ステップには、第１の処理ステップと、第２の処理ステップと、第３の処理ステップと、第４の処理ステップと、第５の処理ステップとが含まれる。第１の処理ステップにおいて、データ生成部３１が、乱数生成ステップにより生成された乱数に基づいて、総数Ｍ（ただしＭは正の整数）を分配してＬ個の要素の各々に割り当てる。第２の処理ステップにおいて、データ生成部３１が、乱数生成ステップにより生成された乱数に基づいて、Ｌ個の要素のうちから１つの要素を移動元の要素（第１の要素）として選択する。第３の処理ステップにおいて、データ生成部３１が、Ｌ個の要素から移動元の要素（第１の要素）に対して予め定められた一部の選択可能な要素のうちから、乱数生成ステップにより生成された乱数に基づいて、１つの要素を移動先の要素（第２の要素）として選択する。第４の処理ステップにおいて、データ生成部３１が、移動元の要素（第１の要素）の値が１以上である場合に、移動元の要素（第１の要素）から移動先の要素（第２の要素）に要素の値を１つ移動する。第５の処理ステップにおいて、データ生成部３１が、第２の処理ステップから第４の処理ステップを繰り返し行う。
これにより、本実施形態によるデータ生成方法は、上述したデータ生成装置１と同様の効果を奏し、べき分布データを容易に生成することができる。
【００５９】
なお、本発明は、上記の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の実施形態において、Ｎ次元配列の要素を用いてべき分布データを生成する例を説明したが、これに限定されるものではなく、単にＬ個（ただしＬは正の整数）の要素を用いてもよい。この場合、移動先候補の要素は、各要素に対して、予め定められた一部の要素であってもよい。
また、上記の実施形態において、Ｎ次元配列の一例として、２次元配列を用いる例を説明したが、これに限定されるものではなく、３次元以上の配列を用いるようにしてもよい。
【００６０】
また、上記の実施形態において、Ｎ次元の要素番号の正負の方向のうちの各次元で予め定められた１つの方向（移動先候補の方向）を、全て正方向（図３、図１０、図１２、及び図１３）に定める例を説明したが、これに限定されるものではない。例えば、この移動先候補の方向は、図１１に示す第２の変形例のように、正方向と負方向とを組み合わせてもよいし、全て負方向であってもよい。
【００６１】
また、上記の実施形態において、データ生成装置１は、生成したべき分布データを、自然現象や社会現象を解析する際のシミュレーションの初期データとして利用する際に、Ｎ次元配列上に、乱数を利用してランダムに再配置するようにしてもよい。これにより、データ生成装置１は、図８に示すようなＮ次元配列上の偏りを解消したべき分布データを生成することが可能になる。
【００６２】
なお、上述したデータ生成装置１が備える各構成は、内部に、コンピュータシステムを有している。そして、上述したデータ生成装置１が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述したデータ生成装置１が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。
【００６３】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後にデータ生成装置１が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００６４】
また、上述した機能の一部又は全部を、ＬＳＩ（Large Scale Integration）等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【００６５】
１  データ生成装置
１１  乱数生成部
２０  記憶部
２１  配列記憶部
２２  選択要素記憶部
３０  制御部
３１  データ生成部
【図１】
2019053556.tif 000003
【図２】
2019053556.tif 000004
【図３】
2019053556.tif 000005
【図４】
2019053556.tif 000006
【図５】
2019053556.tif 000007
【図６】
2019053556.tif 000008
【図７】
2019053556.tif 000009
【図８】
2019053556.tif 000010
【図９】
2019053556.tif 000011
【図１０】
2019053556.tif 000012
【図１１】
2019053556.tif 000013
【図１２】
2019053556.tif 000014
【図１３】
2019053556.tif 000015