好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Ruby生成隨機數的方法總結

Ruby生成隨機數的方法總結

熱門標簽:電話機器人電話卡封號怎么辦 買了外呼系統不想用了怎么辦 樂昌電話機器人 邯鄲外呼調研線路 浦東上海400開頭的電話申請 武漢呼叫中心外呼系統線路商 真人語音電銷機器人系統 開封百應電銷機器人聯系方式 北京語音電銷機器人價格

數字實際上不是隨機的

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

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

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

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

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

生成數字

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

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

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

# Generate a number from 0 to 10
# In a more readable way
puts 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 15
puts rand(10..15)

非隨機隨機數

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

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

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

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

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

標簽:河北 鄂州 松原 宜春 淄博 自貢 六安 石嘴山

巨人網絡通訊聲明:本文標題《Ruby生成隨機數的方法總結》,本文關鍵詞  Ruby,生成,隨機數,的,方法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby生成隨機數的方法總結》相關的同類信息!
  • 本頁收集關于Ruby生成隨機數的方法總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 最大成人vr无码网站在线播放| 中国幻女free性zozo交体内谢| 91麻豆精品91久久久久同性| japanese日本老熟妇HD| 欧美性a欧美在线| 免费人成网站| 无码AV视频在线观看卡一| 成人国产AV精品 9 2 1 5久久久网站 | ass最极品女人下部pic| 日本五级床片免费硬硬w| 国产精品亚洲AV片最刺激黄 | 男人一边吃奶一边做爰| 曰夲卖婬片免费看9.1| 中国xxxxxxxxx| 毛片3| 让男人爽到不行的床技| 国产精九九???网站| 娇喘午夜啪啪五分钟娇喘| 板桥市| twitter账号| 欧美另类丰满熟妇乱XXXXX| 亚洲精品一区二区三区三| 91丝袜美腿高跟国产极品老师| 欧美精品国产综合激情原创一区 | 少妇激情婬乱1一15黄蓉作文 | 免费看片在线| 专干农村熟妇女视频| 夫の目の前で犯在线播放| 黄色视频免费看| 宝贝真紧| 日本55丰满熟妇厨房伦| 91精品国产一区二区无码思瑞 | japanesepregnant孕交| 国产伦子系列午睡沙发| 好爽?好紧?再深一点李晨| 亚洲中文久久久久久精品蕉| 吊侵犯の奶水授乳羞羞漫画| 国产日韩欧美综合一区二区三区| 色老头影院| 久久电影精品| 国产色产综合色产在线观看视频|