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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 如何在Python中生成隨機數 > 原文: [https://machinelearningmastery.com/how-to-generate-random-numbers-in-python/](https://machinelearningmastery.com/how-to-generate-random-numbers-in-python/) 隨機性的使用是機器學習算法的配置和評估的重要部分。 從人工神經網絡中的權重的隨機初始化,到將數據分成隨機訓練和測試集,到隨機梯度下降中的訓練數據集的隨機改組,生成隨機數和利用隨機性是必需的技能。 在本教程中,您將了解如何在Python中生成和使用隨機數。 完成本教程后,您將了解: * 可以通過使用偽隨機數生成器在程序中應用該隨機性。 * 如何通過Python標準庫生成隨機數并使用隨機性。 * 如何通過NumPy庫生成隨機數組。 讓我們開始吧。 ![How to Generate Random Numbers in Python](img/e6b0c44ac6567261c267d3920a3ef41c.jpg) 如何在Python中生成隨機數 照片來自 [Harold Litwiler](https://www.flickr.com/photos/a_little_brighter/15908996592/) ,保留一些權利。 ## 教程概述 本教程分為3個部分;他們是: 1. 偽隨機數生成器 2. Python的隨機數 3. NumPy的隨機數 ## 1.偽隨機數發生器 我們注入到我們的程序和算法中的[隨機性](https://en.wikipedia.org/wiki/Randomness)的來源是一種稱為偽隨機數生成器的數學技巧。 隨機數生成器是從真實的隨機源生成隨機數的系統。經常是物理的東西,比如蓋革計數器,結果變成隨機數。我們在機器學習中不需要真正的隨機性。相反,我們可以使用[偽隨機性](https://en.wikipedia.org/wiki/Pseudorandom_number_generator)。偽隨機性是看起來接近隨機的數字樣本,但是使用確定性過程生成。 隨機值改組數據和初始化系數使用偽隨機數生成器。這些小程序通常是一個可以調用的函數,它將返回一個隨機數。再次調用,他們將返回一個新的隨機數。包裝函數通常也可用,允許您將隨機性作為整數,浮點,特定分布,特定范圍內等等。 數字按順序生成。序列是確定性的,并以初始數字播種。如果您沒有顯式地為偽隨機數生成器設定種子,那么它可以使用當前系統時間(以秒或毫秒為單位)作為種子。 種子的價值無關緊要。選擇你想要的任何東西重要的是,該過程的相同種子將導致相同的隨機數序列。 讓我們通過一些例子來具體化。 ## 2.使用Python的隨機數 Python標準庫提供了一個名為 [random](https://docs.python.org/3/library/random.html) 的模塊,它提供了一組用于生成隨機數的函數。 Python使用一種流行且強大的偽隨機數生成器,稱為 [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister) 。 在本節中,我們將介紹使用標準Python API生成和使用隨機數和隨機性的一些用例。 ### 種子隨機數發生器 偽隨機數發生器是一種生成幾乎隨機數序列的數學函數。 它需要一個參數來啟動序列,稱為種子。該函數是確定性的,意味著給定相同的種子,它每次都會產生相同的數字序列。種子的選擇無關緊要。 _seed()_函數將為偽隨機數生成器播種,將整數值作為參數,例如1或7.如果在使用randomness之前未調用seed()函數,則默認為使用epoch(1970)中的當前系統時間(以毫秒為單位)。 下面的示例演示了對偽隨機數生成器進行播種,生成一些隨機數,并顯示重新生成生成器將導致生成相同的數字序列。 ```py # seed the pseudorandom number generator from random import seed from random import random # seed random number generator seed(1) # generate some random numbers print(random(), random(), random()) # reset the seed seed(1) # generate some random numbers print(random(), random(), random()) ``` 運行示例為偽隨機數生成器播種值為1,生成3個隨機數,重新生成生成器,并顯示生成相同的三個隨機數。 ```py 0.13436424411240122 0.8474337369372327 0.763774618976614 0.13436424411240122 0.8474337369372327 0.763774618976614 ``` 通過設置種子來控制隨機性可能很有用,以確保您的代碼每次都產生相同的結果,例如在生產模型中。 對于運行實驗,其中使用隨機化來控制混雜變量,可以對每個實驗運行使用不同的種子。 ### 隨機浮點值 可以使用 _random()_函數生成隨機浮點值。值將在0和1之間的范圍內生成,特別是在區間[0,1)中。 值來自均勻分布,意味著每個值具有相同的繪制機會。 以下示例生成10個隨機浮點值。 ```py # generate random floating point values from random import seed from random import random # seed random number generator seed(1) # generate random numbers between 0-1 for _ in range(10): value = random() print(value) ``` 運行該示例會生成并打印每個隨機浮點值。 ```py 0.13436424411240122 0.8474337369372327 0.763774618976614 0.2550690257394217 0.49543508709194095 0.4494910647887381 0.651592972722763 0.7887233511355132 0.0938595867742349 0.02834747652200631 ``` 浮點值可以通過將它們乘以新范圍的大小并添加最小值來重新調整到所需范圍,如下所示: ```py scaled value = min + (value * (max - min)) ``` 其中 _min_ 和 _max_ 分別是所需范圍的最小值和最大值,_值_是0到1范圍內隨機生成的浮點值。 ### 隨機整數值 可以使用 _randint()_函數生成隨機整數值。 此函數有兩個參數:生成的整數值的范圍的開始和結束。隨機整數在范圍值的開始和結束范圍內生成,包括范圍值的開始和結束,特別是在區間[start,end]中。隨機值來自均勻分布。 下面的示例生成10個10到10之間的隨機整數值。 ```py # generate random integer values from random import seed from random import randint # seed random number generator seed(1) # generate some integers for _ in range(10): value = randint(0, 10) print(value) ``` 運行該示例會生成并打印10個隨機整數值。 ```py 2 9 1 4 1 7 7 7 10 6 ``` ### 隨機高斯值 可以使用 _gauss()_函數從高斯分布中繪制隨機浮點值。 此函數采用兩個參數,這些參數對應于控制分布大小的參數,特別是平均值和標準偏差。 下面的示例生成從高斯分布繪制的10個隨機值,平均值為0.0,標準差為1.0。 請注意,這些參數不是值的界限,并且值的擴展將由分布的鐘形控制,在這種情況下,比例可能高于和低于0.0。 ```py # generate random Gaussian values from random import seed from random import gauss # seed random number generator seed(1) # generate some Gaussian values for _ in range(10): value = gauss(0, 1) print(value) ``` 運行該示例生成并打印10個高斯隨機值。 ```py 1.2881847531554629 1.449445608699771 0.06633580893826191 -0.7645436509716318 -1.0921732151041414 0.03133451683171687 -1.022103170010873 -1.4368294451025299 0.19931197648375384 0.13337460465860485 ``` ### 從列表中隨機選擇 隨機數可用于從列表中隨機選擇項目。 例如,如果列表有10個索引在0到9之間的項目,那么您可以生成0到9之間的隨機整數,并使用它從列表中隨機選擇一個項目。 _choice()_函數為您實現此行為。選擇是以均勻的可能性進行的。 下面的示例生成一個包含20個整數的列表,并給出了從列表中選擇一個隨機項的五個示例。 ```py # choose a random element from a list from random import seed from random import choice # seed random number generator seed(1) # prepare a sequence sequence = [i for i in range(20)] print(sequence) # make choices from the sequence for _ in range(5): selection = choice(sequence) print(selection) ``` 首先運行該示例打印整數值列表,然后是從列表中選擇和打印隨機值的五個示例。 ```py [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 4 18 2 8 3 ``` ### 列表中的隨機子樣本 我們可能有興趣重復從列表中隨機選擇項目以創建隨機選擇的子集。 重要的是,一旦從列表中選擇了一個項目并將其添加到子集中,就不應再次添加它。這被稱為無需替換的選擇,因為一旦為子集選擇了列表中的項目,它就不會被添加回原始列表(即,不能用于重新選擇)。 _sample()_函數提供了此行為,該函數從列表中選擇隨機樣本而不進行替換。該函數將列表和子集的大小選為參數。請注意,項目實際上并未從原始列表中刪除,只能選擇列表的副本。 下面的示例演示如何從20個整數的列表中選擇五個項目的子集。 ```py # select a random sample without replacement from random import seed from random import sample # seed random number generator seed(1) # prepare a sequence sequence = [i for i in range(20)] print(sequence) # select a subset without replacement subset = sample(sequence, 5) print(subset) ``` 首先運行該示例打印整數值列表,然后選擇并打印隨機樣本以進行比較。 ```py [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [4, 18, 2, 8, 3] ``` ### 隨機隨機播放列表 隨機性可用于隨機播放項目列表,例如洗牌一副牌。 _shuffle()_函數可用于混洗列表。 shuffle在適當的位置執行,這意味著作為 _shuffle()_函數的參數提供的列表被混洗,而不是正在制作和返回的列表的混洗副本。 下面的示例演示了隨機填充整數值列表。 ```py # randomly shuffle a sequence from random import seed from random import shuffle # seed random number generator seed(1) # prepare a sequence sequence = [i for i in range(20)] print(sequence) # randomly shuffle the sequence shuffle(sequence) print(sequence) ``` 運行該示例首先打印整數列表,然后打印隨機洗牌后的相同列表。 ```py [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [11, 5, 17, 19, 9, 0, 16, 1, 15, 6, 10, 13, 14, 12, 7, 3, 8, 2, 18, 4] ``` ## 3\. NumPy的隨機數 在機器學習中,您可能正在使用諸如scikit-learn和Keras之類的庫。 這些庫使用了NumPy,這個庫可以非常有效地處理數字的向量和矩陣。 NumPy還有自己的[偽隨機數生成器](https://docs.scipy.org/doc/numpy/reference/routines.random.html)和便捷包裝函數的實現。 NumPy還實現了Mersenne Twister偽隨機數生成器。 讓我們看幾個生成隨機數并使用NumPy數組隨機性的例子。 ### Seed The Random Number Generator NumPy偽隨機數生成器與Python標準庫偽隨機數生成器不同。 重要的是,播種Python偽隨機數生成器不會影響NumPy偽隨機數生成器。它必須單獨播種和使用。 _seed()_函數可用于為NumPy偽隨機數生成器播種,取整數作為種子值。 下面的示例演示了如何為生成器設定種子以及如何重新生成生成器將導致生成相同的隨機數序列。 ```py # seed the pseudorandom number generator from numpy.random import seed from numpy.random import rand # seed random number generator seed(1) # generate some random numbers print(rand(3)) # reset the seed seed(1) # generate some random numbers print(rand(3)) ``` 運行示例種子偽隨機數生成器,打印一系列隨機數,然后重新生成生成器,顯示生成完全相同的隨機數序列。 ```py [4.17022005e-01 7.20324493e-01 1.14374817e-04] [4.17022005e-01 7.20324493e-01 1.14374817e-04] ``` ### 隨機浮點值數組 可以使用 _rand()_ NumPy函數生成隨機浮點值數組。 如果未提供參數,則創建單個隨機值,否則可以指定數組的大小。 下面的示例創建一個由均勻分布繪制的10個隨機浮點值的數組。 ```py # generate random floating point values from numpy.random import seed from numpy.random import rand # seed random number generator seed(1) # generate random numbers between 0-1 values = rand(10) print(values) ``` 運行該示例生成并打印隨機浮點值的NumPy數組。 ```py [4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01 1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01 3.96767474e-01 5.38816734e-01] ``` ### 隨機整數值數組 可以使用 _randint()_ NumPy函數生成隨機整數數組。 此函數有三個參數,范圍的下限,范圍的上端,以及要生成的整數值的數量或數組的大小。隨機整數將從均勻分布中提取,包括較低的值并排除較高的值,例如,在區間[下,上)。 下面的示例演示了如何生成隨機整數數組。 ```py # generate random integer values from numpy.random import seed from numpy.random import randint # seed random number generator seed(1) # generate some integers values = randint(0, 10, 20) print(values) ``` 運行該示例將生成并打印一個包含0到10之間的20個隨機整數值的數組。 ```py [5 8 9 5 0 0 1 7 6 9 2 4 5 2 4 2 4 7 7 9] ``` ### 隨機高斯值數組 可以使用 _randn()_ NumPy函數生成隨機高斯值的數組。 此函數使用單個參數來指定結果數組的大小。高斯值是從標準高斯分布中提取的;這是一個平均值為0.0且標準差為1.0的分布。 下面的示例顯示了如何生成隨機高斯值數組。 ```py # generate random Gaussian values from numpy.random import seed from numpy.random import randn # seed random number generator seed(1) # generate some Gaussian values values = randn(10) print(values) ``` 運行該示例生成并打印來自標準高斯分布的10個隨機值的數組。 ```py [ 1.62434536 -0.61175641 -0.52817175 -1.07296862 0.86540763 -2.3015387 1.74481176 -0.7612069 0.3190391 -0.24937038] ``` 來自標準高斯分布的值可以通過將該值乘以標準偏差并且從期望的縮放分布中添加平均值來縮放。例如: ```py scaled value = mean + value * stdev ``` 其中_表示_和 _stdev_ 是所需縮放高斯分布的平均值和標準偏差,_值_是來自標準高斯分布的隨機生成值。 ### Shuffle NumPy數組 NumPy數組可以使用 _shuffle()_ NumPy函數隨機混洗。 下面的示例演示了如何隨機播放NumPy數組。 ```py # randomly shuffle a sequence from numpy.random import seed from numpy.random import shuffle # seed random number generator seed(1) # prepare a sequence sequence = [i for i in range(20)] print(sequence) # randomly shuffle the sequence shuffle(sequence) print(sequence) ``` 首先運行該示例生成一個包含20個整數值的列表,然后隨機播放并打印混洗數組。 ```py [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [3, 16, 6, 10, 2, 14, 4, 17, 7, 1, 13, 0, 19, 18, 9, 15, 8, 12, 11, 5] ``` ### 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 * [在機器學習中擁抱隨機性](https://machinelearningmastery.com/randomness-in-machine-learning/) * [random - 生成偽隨機數](https://docs.python.org/3/library/random.html) * [NumPy](https://docs.scipy.org/doc/numpy/reference/routines.random.html) 中的隨機抽樣 * [維基百科上的偽隨機數發生器](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) ## 摘要 在本教程中,您了解了如何在Python中生成和使用隨機數。 具體來說,你學到了: * 可以通過使用偽隨機數生成器在程序中應用該隨機性。 * 如何通過Python標準庫生成隨機數并使用隨機性。 * 如何通過NumPy庫生成隨機數組。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看