• ベストアンサー

一様乱数の期待値

一様乱数の理論上の期待値の求め方を教えて下さい。確率密度関数が一定という条件を用いるようです。 -1~1の一様乱数R(n)を発生させるプログラムを作って、その結果得られた乱数の期待値((R(n)*R(n))/Nと理論上の期待値とを比較するためです。具体的には、sin波に一様乱数を加えて、SN比を求める問題です。 よろしくお願いします。

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

  • ベストアンサー
  • yaksa
  • ベストアンサー率42% (84/197)
回答No.5

問題をちらっとみましたが、単にS/N比を計算すればいいだけみたいですね。 問題2に書いてあるように、 E[R(n)^2]/E[x^2(n)] を計算すればいいわけです。 E[R(n)^n]=∫_[-1,1]x^2*1/2 dx = 1/3 #1では、何がしりたいのかよくわからなかったので、R(n)^2の確率密度も求めるやりかたでやりましたが。

その他の回答 (4)

  • keyguy
  • ベストアンサー率28% (135/469)
回答No.4

確率変数R[0],R[1],R[2],・・・,R[N-1] がそれぞれ互いに独立で一様分布だと Nが256と十分に大きいので中心極限定理により R[i]の平均は0で分散は1/3なので R[0]+R[1]+R[2]+・・・+R[N-1] はほぼN(0,N/3)の正規分布になりますね

  • keyguy
  • ベストアンサー率28% (135/469)
回答No.3

Nとは? nとは? R(?)は関数?

  • Rossana
  • ベストアンサー率33% (131/394)
回答No.2

一様乱数の連続型確率密度変数Xとすると,確率密度は (1))-1≦x≦1のとき f(x)=p=const. (2))x<-1,1<xのとき f(x)=0 の確率分布に従うとして, 規格化条件∫[-∞→∞]f(x)dx=1より p∫[-1→1]dx=2p=1 また, 期待値μ=E[X]=∫[-∞→∞]xf(x)dx =p∫[-1→1]xdx =0 適当に考えただけなので,自信なしです.

  • yaksa
  • ベストアンサー率42% (84/197)
回答No.1

何が問題なのかよく分かりませんが。 一様乱数の期待値は、真ん中の値ですけど。。 > -1~1の一様乱数R(n) R(n)の期待値は0ですね。 ((R(n)*R(n))/N の期待値は、(なんかカッコの数があってないけど) 0≦x≦1として、 累積密度は P(R(n)^2≦x) = P(√x≦-R(n)≦√x)        = 2*√x/2        =√x 確率密度は、d(√x)/dx = 1/(2*√x) 期待値は、 E[(R(n)*R(n))/N] = 1/N*∫_[0,1] x/(2*√x)dx =1/2N *∫_[0,1] √x dx =1/3N ですね。

manky1225
質問者

補足

問題は↓です。ファイルサイズ大きいです。 http://www.cty-net.ne.jp/~m-yuji/image.jpg 5-3では、乱数(雑音)を加える前のsin波の値を(14)式に代入してPsを、発生させた乱数の値を(15)式に代入してPnを求め、SN比を10log10(Ps/Pn)で算出しました。 問題2ではどうやってSN比を求めるのかがわかりません。

関連するQ&A

  • 規則に従った乱数

    一様乱数を発生させるプログラムはネット上でも入手できます。ある種の確率密度分布に従った乱数を発生させるにはどうしたらいいでしょうか。 例えば0から1の乱数ですが、平均が0.5で分散が0.2のガウス分布に従った乱数を発生させるとしたら0.5に近いところの値が多く出て、0.9のあたりはあまり出ないということになります。そういう乱数です。 そういうものを乱数というのかどうかわかりませんが。 しかし、物理現象は何らかの分布に従う乱数のようなものと考えることができるのではないでしょうか。 よろしくお願いします。

  • 三角関数の乱数について

    シミュレーションで用いる為に、 cos^2(θ) (コサイン2乗θです、θは0~90度の範囲) に従う乱数を作成しなければいけません。 (具体的な内容としましては、θを地表と鉛直方向の角度とすると、入射するN(粒子数)が、cos^2(θ)に比例し、それに沿った粒子を大量に発生させる必要がある為) プログラムはC++で書いています。 自分なりに調べて、 確率密度関数をf(x)としたとき、その累積分布関数g(x)の逆関数、 G(x)=g^-1(x)を求め、G(rand())として得られる、という所まではわかったのですが、 昔から数学が苦手な為、 f(θ)=cos^2(θ) g(θ)=(sin2θ)/4 + θ/2 で、これからG(θ)を求める方法がわかりません。 (これは非線型の逆関数でしょうか?) これだけなら数学の方に書くべきかもしれませんが、 このような三角関数の乱数の求めかたはプログラミングの分野で既に周知かなと思いこちらで質問しました。 どうすればいいかご助言を頂きたいです。 求められるのであれば上記の方法の続きでなくともなんでも構いません。 私はプログラム初心者で、まだ知らない便利な関数があり見落としているかもしれないです。 よろしくお願い致します。

  • エクセルの乱数関数で乱数を作成する。

    エクセルの乱数関数で乱数を作成する。 たとえば1~100までの乱数を作成する時、 1,2,3,・・・・,99,100の整数を複数発生させずに1個ずつ発生させることができますか? VBAとかプログラムを作らないとダメでしょうか?

  • 三角分布に従う乱数

    三角分布に従う乱数を発生させるプログラム 最頻値gで、0.8g~2.5gの範囲の三角分布(当然面積は1です)に従う乱数を発生させるプログラムを 書きたいと思っています。 この三角分布の確率密度関数をP(x)とすると、三角分布であるので最頻値gの左側である、傾きが正の直線h(x)と 最頻値gの右側である、傾きが負の直線f(x)で表せますよね 分布に従う乱数を発生させるためには、これら直線の関数を積分したものの逆関数x=P^-1(u) (Pのインバースです) (uは区間[0, 1]の一様乱数)とすればいいというところまでわかったんですが、 とりあえずh(x)とf(x)をそれぞれ積分して逆関数H^-1(u)、F^-1(u)を求めたところまではいいんですが x=H^-1(u)+F^-1(u)としてプログラムを実行すると、最頻値gの2倍あたりの値(例えば20に対して39など) しか出ず、最頻値gより小さい値が出ません。 H^-1(u)+F^-1(u)としているのがダメだと思うのですが、逆関数が2つある場合、ここからどうすればいいですか? また、初歩的な質問なのですが、区間[0, 1]の一様乱数というのはどう記述すればよいですか? ぜひ多くの方の回答お待ちしています。 よろしくお願いします。 (最頻値gは入力で与えるものとします)

  • 乱数の発生確率(c++)

    0,1の2値の乱数を発生させるとき、1の発生確率を例えば20%にするにはどのようにすればよいのでしょうか。 発生乱数を除算して余りを求めて・・・・の方法など試したのですが、うまいこといきませんでした。(プログラムが動かないのではなく結果が) 私の確率の認識が間違っているのかもしれませんが、この場合、1000個発生させた場合、300近く1が出れば良いということですよね。

  • 正規分布に従う乱数を発生させるには?

    0以上1未満の実数のうちから均一な確率で乱数を発生できるものがあるとします。 (頭にあるのはプログラムのrnd関数です)。 この乱数をxとしたとき、このxを適当な変換式f=f(x)に代入して 正規分布に従うような数yを得たいと思います。 どうすればよいでしょうか?

  • 乱数と配列

    0から99までの整数の乱数を1000個発生させ,各整数の確率(出現確率=出現回数/1000)を計算し、エントロピーを求め表示するプログラムを作成したいのですが、どういったソースコードになるのか教えていただけませんか。

  • 正規乱数

    正規乱数X(平均0、分散1)をN個発生させたとします。 Xの最大値Xmaxの期待値はどのように求めたらよいでしょうか?

  • Mathematicaによる乱数生成について

    Mathematicaを用いて正規分布に係数をかけた物に従った乱数を生成したいのですが、ヘルプを調べても分からず困っています。 具体的に行いたいことは、 RandomReal[1/3*NormalDistribution[0,10], 100]          ~~~ のような事です。 正規分布の確率密度関数(平均0,分散10)に係数(ここでは1/3)をかけた分布に従う乱数を100個生成したいということです。 どなたか解決方法をご存知の方がいらっしゃいましたらよろしくお願いいたします。

  • 乱数を発生させるプログラムを教えてください。

    タイトルのままなのですが、1から100までの乱数を発生させるプログラムを知りたいです。 乱数をxとおくと、xの値は、0<x<1の範囲内でお願いします。 C言語で、rand関数を用いて、どうかお願いします。