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

首頁 > 編程 > Ruby > 正文

Ruby生成隨機數的方法總結

2020-10-29 19:33:48
字體:
來源:轉載
供稿:網友

數字實際上不是隨機的

沒有一臺計算機能純粹通過計算產生真正的隨機數。它們能做的最好的事情就是生成偽隨機數,偽隨機數是一組看起來隨機但實際上不是隨機的數字。

對于人類觀察者來說,這些數字確實是隨機的。不會有短的重復序列,而且,至少對人類觀察者來說,它們是完全隨機的。但是,如果有足夠的時間和動機,就可以發現原始種子,重新創建序列,并猜測序列中的下一個數字。

因此,本文中討論的方法可能不應該用于生成必須加密安全的數字。

如上所述,必須對偽隨機數生成器(PRNGs)進行播種,以便每次生成新的隨機數時產生不同的序列。請記住,沒有一種方法是神奇的――這些看似隨機的數字是用相對簡單的算法和相對簡單的算術生成的。通過播種PRNG,每次都可以從不同的點開始。如果你不播種,它每次都會產生相同的數字序列。

在Ruby中,可以不帶參數地調用內核#srand方法。它將根據時間、進程ID和序列號選擇隨機數種子。只需在程序開始時在任何地方調用srand,每次運行它時都會生成一系列不同的看似隨機的數字。當程序啟動時隱式地調用此方法,并使用時間和進程ID(無序列號)播種PRNG。

生成數字

一旦程序運行并且內核#srand被隱式或顯式地調用,就可以調用內核#rand方法。這個方法調用時沒有參數,它將返回一個從0到1的隨機數。在過去,這個數字通常被縮放到您希望生成的最大數字,也許to_i調用它來將其轉換為整數。

# Generate an integer from 0 to 10puts (rand() * 10).to_i

然而,如果您使用Ruby 1.9.x, Ruby會使事情變得更簡單。Kernel#rand方法可以接受單個參數。如果這個參數是任何類型的數字,Ruby將生成一個從0到(不包括)那個數字的整數。

# Generate a number from 0 to 10# In a more readable wayputs rand(10)

但是,如果您想要生成一個從10到15的數字呢?通常,您會生成一個從0到5的數字,并將其添加到10。然而,Ruby使它更容易。

您可以將一個Range對象傳遞給Kernel#rand,它的作用正如您所期望的:在該范圍內生成一個隨機整數。

一定要注意這兩種類型的范圍。如果調用rand(10..15),就會生成一個從10到15的數字,包括15。而蘭德(10…15)(有3個點)將產生一個從10到15的數字,不包括15。

# Generate a number from 10 to 15# Including 15puts rand(10..15)

非隨機隨機數

有時您需要一個看起來隨機的數字序列,但每次都需要生成相同的序列。例如,如果在單元測試中生成隨機數,那么每次都應該生成相同的數字序列。

在一個序列上失敗的單元測試在下一次運行時應該會再次失敗,如果下一次它生成了一個不同的序列,那么它可能不會失敗。為此,使用一個已知的常量值調用內核#srand。

# Generate the same sequence of numbers every time# the program is runsrand(5)# Generate 10 random numbersputs (0..10).map{rand(0..10)}

注意,內核#rand的實現是非ruby的。它不以任何方式抽象PRNG,也不允許實例化PRNG。對于PRNG,所有代碼共享一個全局狀態。如果您更改種子或以其他方式更改PRNG的狀態,其影響范圍可能比您預期的更廣。

然而,由于程序期望這個方法的結果是隨機的(因為這是它的目的),這可能永遠不會成為問題。只有當程序期望看到一個預期的數字序列時,例如它調用了一個具有常量值的srand,它才會看到意外的結果。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩综合av| 欧美性生活大片免费观看网址| 亚洲在线第一页| 久久久噜噜噜久久久| 欧美在线影院在线视频| 在线观看成人黄色| 亚洲一区二区在线播放| 亚洲精品国产suv| 亚洲a在线观看| 精品视频久久久久久久| 亚洲乱亚洲乱妇无码| 欧美丰满片xxx777| 国产精品日韩在线观看| 成人免费观看网址| 欧洲成人免费aa| 色噜噜狠狠色综合网图区| 波霸ol色综合久久| 高潮白浆女日韩av免费看| 久久国内精品一国内精品| 亚洲天堂av在线免费观看| 一区三区二区视频| 高清欧美性猛交xxxx| 色综合伊人色综合网站| 日韩国产高清视频在线| 亚洲第一页自拍| 久久久久北条麻妃免费看| 国模私拍一区二区三区| 国产精品91久久| 欧美激情视频免费观看| 久久视频在线播放| 久久久久免费视频| 亚洲国产欧美日韩精品| 热久久视久久精品18亚洲精品| 日韩精品在线免费观看| 国产精品一区二区久久久久| 国产精品视频一区二区三区四| 最新国产精品拍自在线播放| 日韩欧美精品免费在线| 国产成+人+综合+亚洲欧美丁香花| 欧美亚洲成人精品| 欧美亚洲激情视频| 欧美性猛交xxxx偷拍洗澡| 国产女精品视频网站免费| 亚洲第一区在线观看| 精品国产乱码久久久久酒店| 91在线观看免费网站| 国产成人精品a视频一区www| 国产精品稀缺呦系列在线| 精品国产成人av| 亚洲国产天堂久久国产91| 亚洲tv在线观看| 欧美在线性爱视频| yw.139尤物在线精品视频| 日韩精品中文字幕在线| 亚洲欧美日韩天堂| 亚洲欧美三级在线| 久久精品视频导航| 久久久久久久久久久网站| 中文字幕日韩在线观看| 欧美亚洲成人精品| 国产成人中文字幕| 亚洲白拍色综合图区| 亚洲国产欧美自拍| 日韩中文字幕久久| 色偷偷噜噜噜亚洲男人的天堂| 一区二区三区 在线观看视| 国产精品久久久av久久久| 亚洲国产日韩欧美在线图片| 午夜精品久久17c| 久久久国产精品x99av| 亚洲成人亚洲激情| 久久成人人人人精品欧| 久久香蕉频线观| 日韩少妇与小伙激情| 亚洲精品一区在线观看香蕉| 日韩精品中文字幕在线| 日韩经典一区二区三区| 国产成人精品午夜| 亚洲色图17p| 精品久久久久久久久久久| 神马久久久久久| 日韩av影视在线| 97视频在线看| 成人免费网站在线| 95av在线视频| 日本成人黄色片| 亚洲韩国青草视频| 国产精品美腿一区在线看| 久久久久久久久爱| 国产一区av在线| 日韩在线视频播放| 国产+成+人+亚洲欧洲| 欧美老女人在线视频| 亚洲精品91美女久久久久久久| 久久久国产精品免费| 国产精品三级美女白浆呻吟| 亚洲午夜未删减在线观看| 国产91色在线| 欧美疯狂性受xxxxx另类| 日本久久久久久久久| 日韩欧美aⅴ综合网站发布| 国a精品视频大全| 欧美成人免费小视频| 欧美一区二区三区……| 日韩电影免费在线观看中文字幕| 欧美最顶级丰满的aⅴ艳星| 亚洲天堂2020| 欧美视频13p| 亚洲女人天堂色在线7777| 欧美精品xxx| 欧美色播在线播放| 色中色综合影院手机版在线观看| 亚洲综合在线播放| 欧美日韩精品在线视频| 亚洲欧美日韩在线高清直播| 欧美性黄网官网| 97在线免费视频| 国产日韩欧美成人| 日韩美女免费视频| 色播久久人人爽人人爽人人片视av| 日韩一区二区精品视频| 亚洲va电影大全| 亚洲色图欧美制服丝袜另类第一页| 国产男女猛烈无遮挡91| 国自在线精品视频| 国产精品av免费在线观看| 欧美高清无遮挡| 国产精品88a∨| 国产美女高潮久久白浆| 97在线看免费观看视频在线观看| 亚洲tv在线观看| 国产成人精品免费视频| 国产亚洲欧洲在线| 久久久久久成人精品| 国产网站欧美日韩免费精品在线观看| 亚洲欧美日韩一区在线| 九九久久国产精品| 欧洲成人在线观看| 欧美激情aaaa| 国产欧美精品日韩| 国产成人高潮免费观看精品| 亚洲一区二区久久久久久久| 亚洲黄色在线观看| 国产成人在线播放| 亚洲男人天堂网| 久久夜精品香蕉| 国产日产欧美精品| 国产精品美女久久| 欧美激情一区二区三级高清视频| 国产精品日韩欧美大师| 亚洲国产91色在线| 成年人精品视频| 欧美成人合集magnet| 88国产精品欧美一区二区三区| 日韩经典第一页| 欧美性生交xxxxxdddd| 亚洲综合中文字幕在线观看| 欧美xxxwww| 中文字幕亚洲情99在线| 国产精品久久久久久久av电影| 中文字幕精品在线| 亚洲精品一区久久久久久| 亚洲欧美激情精品一区二区| 日本精品va在线观看|