<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # rand 我們一般使用 頭文件中的 rand() 函數來生成隨機數,它的用法為: ~~~ int rand (void); ~~~ void 表示不需要傳遞參數。 > C語言中還有一個 random() 函數可以獲取隨機數,但是 random() 不是標準函數,不能在 VC/VS 等編譯器通過,所以比較少用。 rand() 會隨機生成一個位于 `0 ~ RAND_MAX` 之間的整數。 `RAND_MAX` 是? 頭文件中的一個宏,它用來指明 rand() 所能返回的隨機數的最大值。C語言標準并沒有規定 `RAND_MAX` 的具體數值,只是規定它的值至少為 32767。在實際編程中,我們也不需要知道?`RAND_MAX` 的具體值,把它當做一個很大的數來對待即可 ~~~ #include <stdio.h> #include <stdlib.h> int main(){ int a = rand(); printf("%d\n",a); return 0; } ~~~ ## 隨機數的本質 多次運行上面的代碼,你會發現每次產生的隨機數都一樣,這是怎么回事呢?為什么隨機數并不隨機呢? 實際上,rand() 函數產生的隨機數是偽隨機數,是根據一個數值按照某個公式推算出來的,這個數值我們稱之為“種子”。種子和隨機數之間的關系是一種正態分布,如下圖所示: ![](https://box.kancloud.cn/f81d1e4da5f14d092c021a0f911601ae_407x155.png) 種子在每次啟動計算機時是隨機的,但是一旦計算機啟動以后它就不再變化了;也就是說,每次啟動計算機以后,種子就是定值了,所以根據公式推算出來的結果(也就是生成的隨機數)就是固定的 ## 重新播種 我們可以通過 srand() 函數來重新“播種”,這樣種子就會發生改變。srand() 的用法為: ~~~ void srand (unsigned int seed); ~~~ 它需要一個 unsigned int 類型的參數。在實際開發中,我們可以用時間作為參數,只要每次播種的時間不同,那么生成的種子就不同,最終的隨機數也就不同。 使用 頭文件中的 time() 函數即可得到當前的時間(精確到秒),就像下面這樣: ~~~ srand((unsigned)time(NULL)); ~~~ ~~~ #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; srand((unsigned)time(NULL)); a = rand(); printf("%d\n", a); return 0; } ~~~ 多次運行程序,會發現每次生成的隨機數都不一樣了。但是,這些隨機數會有逐漸增大或者逐漸減小的趨勢,這是因為我們以時間為種子,時間是逐漸增大的,結合上面的正態分布圖,很容易推斷出隨機數也會逐漸增大或者減小。 ## 生成一定范圍內的隨機數 在實際開發中,我們往往需要一定范圍內的隨機數,過大或者過小都不符合要求,那么,如何產生一定范圍的隨機數呢?我們可以利用取模的方法: ~~~ int a = rand() % 10; //產生0~9的隨機數,注意10會被整除 ~~~ 如果要規定上下限: ~~~ int a = rand() % 51 + 13; //產生13~63的隨機數 ~~~ 分析:取模即取余,`rand()%51+13`我們可以看成兩部分:`rand()%51`是產生 0~50 的隨機數,后面`+13`保證 a 最小只能是 13,最大就是 50+13=63 最后給出產生 13~63 范圍內隨機數的完整代碼: ~~~ #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int a; srand((unsigned)time(NULL)); a = rand() % 51 + 13; printf("%d\n",a); return 0; } ~~~
                  <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>

                              哎呀哎呀视频在线观看