• ベストアンサー

0~180まで0.0001刻みで乱数を発生させるには

タイトルのままですが、 0.0~180.0まで0.0001刻みで効率よく乱数を発生させたいのですが、いまいち良い方法が浮かびません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#21649
noname#21649
回答No.3

>効率よく の意味がわかりませんが. 7桁ですと.通常の組込み関数が使えません。私が使っていた(通常3桁で十分なので.組込み関数を愛用しています)方法は.JIS(番号忘却)の乱数表を入力し.組込み関数のひとつの乱数から.ひとつの乱数表を選択し.乱数表の読みから.その回数だけ.組込み関数を読み捨てて.一桁目の乱数の値を決めます。これを必要桁数繰り返すと.ある程度均一な.循環が起こりにくい.擬似乱数をえられます。 どの乱数表を選択するか.乱数表内のどの値を使うか.組込み関数を何回読み捨てるか.に組込み関数を使います。 乱数の均一性については.ご質問文から検定などが可能な方と解釈しました。検定だけは行ってください。 立方体での収束の問題は.たしか.組込み関数を読み捨てることで解決できるはずです。この問題解決の為に.組込み関数の読み捨てという方法を使っています。

その他の回答 (2)

  • HOGERA23
  • ベストアンサー率28% (2/7)
回答No.2

「0.0001刻みの乱数」なるものがよくわかりません。 乱数だったら刻みはバラバラなのでは? とりあえず0~1800000までの乱数(整数)を10000で 割るってのはダメですか?

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.1

発生させた乱数を変数ransuuに格納するとします。 たとえば、0.0から180.0まで「0.1刻み」なら、 0から1800まで、1801個の数値をランダムに生成し10で割る以下の式になります。 rannsuu = int(rnd()*1801)/10 ちょっと一般的にやるなら、 kizami = 0.0001 ransuu = int(rnd()*(180/kizami+1))*kizami

関連するQ&A