亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳談JS中實現種子隨機數及作用

2019-11-20 09:27:04
字體:
來源:轉載
供稿:網友

前言

在前端開發中,尤其是游戲開發,經常會用到隨機數,那么我們會第一時間想到:Math.random,大家略微的看看如下代碼:

for (var i= 0; i<10; i++) { document.writeln(Math.random() +"<br />"); }

運行如上代碼,也確實生成了10個不同的數字,當然你可以生成更多,看起來挺不錯的,如果僅僅如此,那么本文就沒必要寫了。

示例

試著想一下,如果在某一個場景,我們做一個游戲,用戶玩到一半的時候退出了,這樣用戶下次進來可以選擇繼續上一次的進度繼續玩,那么現在問題來了:用戶玩的進度以及用戶的積分等簡單的描述數據,我們都可以記錄下來,但是游戲里繪制的障礙物、飛行物以及很多裝飾類的小玩意兒,他們甚至是每次用戶點開始隨機輸出的,要把畫布上所有的東西以及它們的大小,位置等都記錄下來,實在是沒必要。

于是種子隨機數就閃亮登場了,我們如果在畫布上元素隨機繪制的時候,有一個種子值,頁面上所有元素的位置、大小等都是根據這個種子來算的,那么等到第二次繪制的時候只需要傳入這個種子,就可以重現之前未完成的畫布元素。

那么這個時候,你會發現JS里面自帶的Math.random就不好使了,無法滿足需求,我們繼續看這段代碼:

復制代碼 代碼如下:

Math.seed = 5; Math.seededRandom = function(max, min) { max = max || 1; min = min || 0; Math.seed = (Math.seed * 9301 + 49297) % 233280; var rnd = Math.seed / 233280.0; return min + rnd * (max - min); }; for (var i= 0; i<10; i++) { document.writeln(Math.seededRandom() +"<br />"); }

運行如上代碼你會發現如果種子Math.seed不變,那么生成的隨機數是不會變化的,哦了,如果引入這個函數,那么重現游戲場景可以實現了,雖然還需要做更多的細節處理,但機制上是能保證的,本文的重點不是實現一個這樣的游戲。

本文的重點是:(Math.seed * 9301 + 49297) % 233280,為什么會是這三個值,而不是其它的到底這三個數字有什么神秘的來歷呢?

像Math.seededRandom這種偽隨機數生成器叫做線性同余生成器(LCG, Linear Congruential Generator),幾乎所有的運行庫提供的rand都是采用的LCG,形如:

I n+1=aI n+c(mod m)

生成的偽隨機數序列最大周期m,范圍在0到m-1之間。要達到這個最大周期,必須滿足:
1.c與m互質

2.a - 1可以被m的所有質因數整除

3.如果m是4的倍數,a - 1也必須是4的倍數

以上三條被稱為Hull-Dobell定理。作為一個偽隨機數生成器,周期不夠大是不好意思混的,所以這是要求之一。因此才有了:a=9301, c = 49297, m = 233280這組參數,以上三條全部滿足。

總結

以上就是關于種子隨機數在JS中如何實現和作用介紹的內容,希望給JavaScript學習者有所幫助

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲图片在区色| 久久国内精品一国内精品| 欧美电影免费播放| 国产成人亚洲综合91精品| 色噜噜国产精品视频一区二区| 色樱桃影院亚洲精品影院| 国产精品美女免费看| 精品精品国产国产自在线| 国产精品视频免费在线观看| 欧美一级大片视频| 18久久久久久| 亚洲伦理中文字幕| 亚洲欧美中文另类| 精品久久久久国产| 亚洲综合色激情五月| 国内自拍欧美激情| 欧美色另类天堂2015| 久久精品中文字幕一区| 欧美国产在线视频| 精品在线观看国产| 精品国产欧美一区二区五十路| 国产裸体写真av一区二区| 欧美激情视频在线观看| 亚洲性猛交xxxxwww| 日韩av免费一区| 九九精品视频在线| 性金发美女69hd大尺寸| 97精品伊人久久久大香线蕉| 国产精品狼人色视频一区| 精品久久久久久中文字幕一区奶水| 国产精品久久久久久av福利软件| 中日韩午夜理伦电影免费| 精品久久久久久久久国产字幕| 国产91色在线免费| 成人妇女淫片aaaa视频| 日韩一区二区av| 久久精品国亚洲| 欧美黑人xxx| 精品国产一区二区三区四区在线观看| 欧美日韩精品中文字幕| 91久久在线视频| 中文字幕日韩免费视频| 日韩av第一页| 久久视频在线视频| 国产婷婷色综合av蜜臀av| 欧美一级bbbbb性bbbb喷潮片| 日本成熟性欧美| 亚洲va码欧洲m码| 日韩av在线免播放器| 国产精品久久久久久超碰| 日韩成人激情视频| 国产91在线高潮白浆在线观看| 久久久久国产一区二区三区| 国产成人在线一区| 亚洲视频在线观看免费| 国产视频精品va久久久久久| 欧洲日韩成人av| 国产成人精品一区二区在线| 日韩综合中文字幕| 色av吧综合网| 日韩av一区在线观看| 大桥未久av一区二区三区| 日韩免费在线观看视频| 国产视频在线一区二区| 2019日本中文字幕| 午夜精品美女自拍福到在线| 日韩中文字幕免费视频| 欧美一级电影免费在线观看| 亚洲精品成人网| 美日韩精品免费观看视频| 国产精品免费在线免费| 欧美激情中文字幕在线| 91手机视频在线观看| 亚洲精品视频免费| 日本久久久久亚洲中字幕| 色在人av网站天堂精品| 久久全国免费视频| 国产精品三级美女白浆呻吟| 97在线观看免费高清| www.日本久久久久com.| 亚洲人成伊人成综合网久久久| 久久天堂电影网| 亚洲天堂男人天堂| 成人自拍性视频| 伊人亚洲福利一区二区三区| 亚洲色图美腿丝袜| 国产精品电影网| 在线观看日韩视频| 91在线观看欧美日韩| 久久最新资源网| xxx成人少妇69| 欧美日韩性生活视频| 国产一区二区三区视频在线观看| 亚洲一区二区三区久久| 日韩中文字幕第一页| 欧美日韩一区二区三区在线免费观看| 国产精品欧美激情在线播放| 亚洲欧美国产制服动漫| 亚洲最大中文字幕| 国产a∨精品一区二区三区不卡| 国产精品www色诱视频| 欧美视频裸体精品| 人人澡人人澡人人看欧美| 国产日本欧美一区| 久久99精品视频一区97| 91在线视频导航| 国产欧美一区二区三区在线看| 国产欧美欧洲在线观看| 久久综合色影院| 国产亚洲免费的视频看| 日韩不卡中文字幕| 欧美日韩亚洲国产一区| 日韩av不卡电影| 亚洲成人精品视频在线观看| 26uuu另类亚洲欧美日本老年| 国产精品久久久久福利| 91免费精品国偷自产在线| 青草成人免费视频| 亚洲成人久久网| 2021久久精品国产99国产精品| 国产精品视频区| 亚洲a∨日韩av高清在线观看| 国产精品久久久久免费a∨| 欧美精品在线免费| 黑人狂躁日本妞一区二区三区| 亚洲综合自拍一区| 浅井舞香一区二区| 中文字幕亚洲天堂| 国产日韩欧美在线视频观看| 亚洲色图15p| 国产精品丝袜久久久久久高清| 久久久久久12| 日韩免费黄色av| 91在线免费视频| 成人网址在线观看| 日韩成人免费视频| 日韩在线观看网址| 亚洲大胆人体在线| 91手机视频在线观看| 成人精品视频久久久久| 91情侣偷在线精品国产| 色999日韩欧美国产| 亚洲国产成人91精品| 在线免费看av不卡| 日韩在线观看精品| 自拍偷拍免费精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品入口日韩视频大尺度| 中文字幕最新精品| 亚洲成avwww人| 茄子视频成人在线| 欧美猛交ⅹxxx乱大交视频| 亚洲精品91美女久久久久久久| 伊人伊成久久人综合网站| 国产精品高潮呻吟久久av黑人| 92看片淫黄大片欧美看国产片| 高潮白浆女日韩av免费看| 欧美激情欧美激情在线五月| 久久亚洲电影天堂| 欧美性xxxxx极品娇小| 欧美黑人性视频| 国产成人一区三区| 久久人人爽人人爽人人片亚洲| 欧美日韩免费一区|