日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

线性同余法

發(fā)布時(shí)間:2024/8/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性同余法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、 線性同余方法是目前應(yīng)用廣泛的偽隨機(jī)數(shù)生成算法,其基本思想是通過(guò)對(duì)前一個(gè)數(shù)進(jìn)行線性運(yùn)算并取模從而得到下一個(gè)數(shù),遞歸公式為:

xn+1=(axn+c)  mod(m)xn+1=(axn+c)mod(m) yn+1=xn+1/myn+1=xn+1/m

其中a稱為乘數(shù),c稱為增量,m稱為模數(shù),當(dāng)a=0時(shí)為和同余法,當(dāng)c=0時(shí)為乘同余法,c≠0時(shí)為混合同余法。 乘數(shù)、增量和模數(shù)的選取可以多種多樣,只要保證產(chǎn)生的隨機(jī)數(shù)有較好的均勻性和隨機(jī)性即可,一般采用m=2km=2k混合同余法。
線性同余法的最大周期是m,但一般情況下會(huì)小于m。要使周期達(dá)到最大,應(yīng)該滿足以下條件:
(1) c和m互質(zhì);
(2) m的所有質(zhì)因子的積能整除a-1;
(3) 若m是4的倍數(shù),則a-1也是;
(4) a,c,x0x0(初值,一般即種子)都比m小;
(5) a,c是正整數(shù)。
線性同余方法速度快,如果對(duì)乘數(shù)和模數(shù)進(jìn)行適當(dāng)?shù)倪x擇,可以滿足用于評(píng)價(jià)一個(gè)隨機(jī)數(shù)產(chǎn)生器的3 種準(zhǔn)則:
(1)這個(gè)函數(shù)應(yīng)該是一個(gè)完整周期的產(chǎn)生函數(shù)。也就是說(shuō),這個(gè)函數(shù)應(yīng)該在重復(fù)之前產(chǎn)生出0 到m之間的所有數(shù);
(2)產(chǎn)生的序列應(yīng)該看起來(lái)是隨機(jī)的;
(3)這個(gè)函數(shù)應(yīng)該用32bit 算術(shù)高效實(shí)現(xiàn)。

2、例子:運(yùn)用混合同于法生成1000個(gè)[0,1]內(nèi)的均勻分布隨機(jī)數(shù)

function A=fangzheng3(a,c,m,x) A=zeros(1000,1); n=1; while n<=1000n=n+1;x=rem((a*x+c),m); %%rem(x,y):求整除x/y的余數(shù)y=x/m;A(n-1,1)=y; End

運(yùn)行:A=fangzheng3(97,3,1000,71),得到部分結(jié)果

序號(hào)

隨機(jī)數(shù)

序號(hào)

隨機(jī)數(shù)

序號(hào)

隨機(jī)數(shù)

序號(hào)

隨機(jī)數(shù)

序號(hào)

1

0.89

101

0.39

201

0.89

301

0.39

401

2

0.333

102

0.833

202

0.333

302

0.833

402

3

0.304

103

0.804

203

0.304

303

0.804

403

4

0.491

104

0.991

204

0.491

304

0.991

404

5

0.63

105

0.13

205

0.63

305

0.13

405

6

0.113

106

0.613

206

0.113

306

0.613

406

7

0.964

107

0.464

207

0.964

307

0.464

407

8

0.511

108

0.011

208

0.511

308

0.011

408

9

0.57

109

0.07

209

0.57

309

0.07

409

10

0.293

110

0.793

210

0.293

310

0.793

410

11

0.424

111

0.924

211

0.424

311

0.924

411

12

0.131

112

0.631

212

0.131

312

0.631

412

13

0.71

113

0.21

213

0.71

313

0.21

413

14

0.873

114

0.373

214

0.873

314

0.373

414

15

0.684

115

0.184

215

0.684

315

0.184

415

16

0.351

116

0.851

216

0.351

316

0.851

416

17

0.05

117

0.55

217

0.05

317

0.55

417

18

0.853

118

0.353

218

0.853

318

0.353

418

19

0.744

119

0.244

219

0.744

319

0.244

419


對(duì)生成的隨機(jī)數(shù)進(jìn)行一般的統(tǒng)計(jì)量進(jìn)行計(jì)算,計(jì)算出生成隨機(jī)數(shù)的均值和方差以及標(biāo)準(zhǔn)差,matlab程序如下:

sum=0; for n=1:1000sum=sum+A(n,1); end Avg=sum/1000 %計(jì)算其均值 s=0; for n=1:1000s=s+(A(n,1)-Avg)^2; end S=s/(1000-1) %計(jì)算其方差 Stdv=S^0.5 %計(jì)算其標(biāo)準(zhǔn)差

得到:
Avg = 0.4995
S = 0.0834
Stdv = 0.2888
可以看出,生成的均勻分布隨機(jī)數(shù)是均值為0.5,標(biāo)準(zhǔn)差在0.3左右。m越大均值越接近1/2,方差越接近1/12。

總結(jié)

以上是生活随笔為你收集整理的线性同余法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。