2017-03-23 26 views
1

Matlabで一定の間隔で正規分布で整数乱数を作成するにはどうすればよいですか?誰でも答えを出すことができますか?私は乱数を作成する方法を知っている間隔matlabでガウス分布を持つ乱数

は、正規分布で、yは言う:

std = 5; 
mean = 500; 
y = std.*randn + mean; 

しかし、それは整数ではなく、また、それが特定の間隔

+0

はい、あなたはそれを行う方法のthats。何が問題なのですか? –

+0

ある間隔で「整数」ランダムを見つけたいと思う、[a、b]。 @AnderBiguri –

+0

次に、整数で正規分布を定義できますか?私はそれが不可能だと思います... –

答えて

0

整数が必要な場合は、randnを使用して数値を丸めることができます。しかし、あなたの2番目の質問は奇妙なものです。

正規分布に一定の間隔がありません。平均値の周りには「信頼区間」しか定義できません。例えば、分布の99.7%は平均からの3標準偏差内に含まれる。しかし、それはあなたが厳密な間隔を持っていることを意味するものではなく、3x標準偏差を超える数を見る確率はあまりにも低いです。たとえば、mean = 100、std.deviation = 10の10000の数値を生成し、丸めたとしましょう。それから、私は70と130の間の数字を見たいと思っています。この間隔を越える数字があるかもしれませんが、その頻度(〜確率)は低くなります。

mu=100; sigma=10; figure,hist(round(normrnd(mu,sigma,10000,1)),100) 

enter image description here

0

番号を選択していません大きなNの2項(N、0.5)分布から。これは、あなたが「整数の正規分布」に近づくことができるほど近いものをもたらすでしょう。平均はN/2であり、標準偏差N/4である。サンプルを生成するために、そして、約0.1

セイN = 100、それを中心にN/2を引いて、あなたができる:

k = sum(randi(2, [100,1]) - 1); 

か:

k = sum(rand(100,1) < 0.5); 
0

をあなたは関数randnを使用することができますし、出力番号を丸めて整数に変換します。あなたが興味を持っている範囲[a、b]になるまで繰り返します。 中程度の広範囲でうまくいく可能性がありますが、狭い部分を見たい時にはたくさんの試みをします。尾。

他のオプションは、任意の範囲から等しい確率で任意の整数を取得し、範囲内のガウス型に変換することです。 0から10までの数字はaとなり、11-50はa + 1となります。maxint-10:maxintはbになります。

関連する問題