<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 問題 你需要在一定范圍內生成一個隨機數,但是你也需要設定生成程序以提供可預測的數據。 ## 方法 寫你自己的隨機數生成程序。有?_很多_?種方法去實現它。這里有個簡單的示例。?_這個生成程序絕對 不適用 于加密目的!_ ~~~ class Rand # if created without a seed, uses current time as seed constructor: (@seed) -> # Knuth and Lewis' improvements to Park and Miller's LCPRNG @multiplier = 1664525 @modulo = 4294967296 # 2**32-1; @offset = 1013904223 unless @seed? && 0 <= seed < @modulo @seed = (new Date().valueOf() * new Date().getMilliseconds()) % @modulo # sets new seed value seed: (seed) -> @seed = seed # return a random integer 0 <= n < @modulo randn: -> # new_seed = (a * seed + c) % m @seed = (@multiplier*@seed + @offset) % @modulo # return a random float 0 <= f < 1.0 randf: -> this.randn() / @modulo # return a random int 0 <= f < n rand: (n) -> Math.floor(this.randf() * n) # return a random int min <= f < max rand2: (min, max) -> min + this.rand(max-min) ~~~ ## 討論 JavaScript 和 CoffeeScript 并沒有提供可以預先設置的隨機數生成程序。寫你自己的隨機函數將主要練習用一種用簡單隨機生成程序去生成大量隨機數。關于隨機過程的討論超出了這本Cookbook的范疇。有興趣的同學可以閱讀Donald Knuth的?_The Art of Computer Programming_?的第二篇第三章節 “Random Numbles”,以及?_Numerical Recipes in C_?第二版第七章 “Random Numbers”。 然而,一個關于隨機數生成程序的簡單解釋是有序。它就是Linear Congruential Pseudorandom Number Generator(線性全等偽隨機數產生器)。LCPRNG在數學上的表現形式是 Ij+1?= (aIj+c) % m,在公式中,a是乘數,c是偏移常數,m是模數。 每請求一次隨機數,一個很大規模的乘法器和加法器在運行——”很大”是相對于主要的區間而言——并且結果數被模除后,分布在主要的區間中。 這種隨機數生成器的位數范圍是232,如果以加密為目的,這幾乎不可以接受,要不是大多數簡單沒有規則的需求,它足夠適用。在重復自己之前,`randn()`?會覆蓋整個區間,而下一個隨機數由前一個決定。 如果你想粗略的修補一下隨機程序,?_強烈_?建議你閱讀 Knuth 的?_The Art of Computer Programming_?的第三章。隨機數生成程序很容易被搞砸,而且 Knuth 從一個糟糕的案例中解釋怎樣去判斷一個好的隨機數生成程序(RNG, Random Number Generator)。 避免把這個生成的結果進行模除。如果你需要一個整數的范圍,用除法。線性全等生成器在數據位數很小時并不隨機。這種算法特別在當偶數種子的時候,會產生奇數。因此,如果你需要一個0或1的隨機數,?**不要**?使用下面的方法: ~~~ # NOT random! Do not do this! r.randn() % 2 ~~~ 因為你幾乎可以肯定不會得到隨機位數。用`r.randi(2)`代替上面的方法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看