Python3 Random模塊

来源:http://www.cnblogs.com/fengbo1113/archive/2017/12/03/7967393.html
-Advertisement-
Play Games

import random help(random) FUNCTIONS betavariate(alpha, beta) method of Random instance # 隨機實例的方法 Beta distribution. # β分佈 Conditions on the parameter... ...


import random
help(random)
FUNCTIONS
    betavariate(alpha, beta) method of Random instance  # 隨機實例的方法
        Beta distribution.  # β分佈
        
        Conditions on the parameters are alpha > 0 and beta > 0.  # 必須傳入大於0的alpha 與beta參數
        Returned values range between 0 and 1.  # 返回一個0 -1 之間的值,這個值你是隨機的!
        a = random.betavariate(999999, 99999999999999999)  # 第一次執行結果:9.995974671839104e-12  第二次執行結果:1.0006927848540756e-11
        貝塔分佈(Beta Distribution) 是一個作為伯努利分佈和二項式分佈的共軛先驗分佈的密度函數,在機器學習和數理統計學中有重要應用。
        在概率論中,貝塔分佈,也稱Β分佈,是指一組定義在(0,1) 區間的連續概率分佈。
    
    choice(seq) method of Random instance
        Choose a random element from a non-empty sequence.  # 隨機從一個不為空的序列中取出一個元素,參數必須不為空
        Python包含 6 種內建的序列,包括列表、元組、字元串、Unicode字元串、buffer對象和xrange對象。
    
    choices(population, weights=None, *, cum_weights=None, k=1) method of Random instance  # 隨機實例的方法
        Return a k sized list of population elements chosen with replacement.  # 通過chosen with replacement(就是每次抽取的機會都是相同的或按權重來的,前面的選擇不會影響後面選擇的概率)的方式獲取一個由k個元素組成的隨機列表
        
        If the relative weights or cumulative weights are not specified,  # 如果未指定相對權重或累積權重,
        the selections are made with equal probability.                   # 則選擇的概率相等。
        從population中隨機抽取k個元素(可重覆)。兩個參數不能同時存在。
        示例:
        print(random.choices(['red', 'black', 'green'], [18, 18, 2], k=6) )  # 以18的概率權重取red,18的概率權重取black,2的概率權重取green,共進行6次
        
        trial = lambda: random.choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5  # H的概率是0.6,T的概率是0.4
        print(sum(trial() for i in range(10000)) / 10000)

        trial2 = lambda : 2500 <= sorted(random.choices(range(10000), k=5))[2]  < 7500
        print(sum(trial2() for i in range(10000)) / 10000 )

        from statistics import mean
        data = 1, 2, 4, 4, 10
        means = sorted(mean(random.choices(data, k=5)) for i in range(20))  # mean是求平均
        print(f'The sample mean of {mean(data):.1f} has a 90% confidence '  
      f'interval from {means[1]:.1f} to {means[-2]:.1f}')  # 這裡的f用法 
        # 上面程式的三次執行結果分別是:
        # The sample mean of 4.2 has a 90% confidence interval from 2.4 to 6.6
        # The sample mean of 4.2 has a 90% confidence interval from 2.6 to 7.2
        # The sample mean of 4.2 has a 90% confidence interval from 2.0 to 7.0

    expovariate(lambd) method of Random instance  # 隨機實例的方法
        Exponential distribution.  # 指數分佈
        
        lambd is 1.0 divided by the desired mean.  It should be
        nonzero.  (The parameter would be called "lambda", but that is
        a reserved word in Python.)  Returned values range from 0 to
        positive infinity if lambd is positive, and from negative
        infinity to 0 if lambd is negative.
        λ(lambd)是1除以所需數的,它不能為零。(參數應當被稱為lambda,但那是python保留字)
        這個函數返回一個0到正無窮大的隨機數(如果 λ 為正),或返回一個負無窮大到0的隨機數,如果(如果 λ 為負)
    
    gammavariate(alpha, beta) method of Random instance  # 隨機實例的方法
        Gamma distribution.  Not the gamma function!  # 伽瑪分佈.不是gamma函數
        
        Conditions on the parameters are alpha > 0 and beta > 0.  # 參數的條件是兩個參數都要大於0
        
        The probability distribution function is:  # 概率分佈函數為:
        
                    x ** (alpha - 1) * math.exp(-x / beta)
          pdf(x) =  --------------------------------------
                      math.gamma(alpha) * beta ** alpha
    
    gauss(mu, sigma) method of Random instance  # 隨機實例的方法
        Gaussian distribution.  # 高斯分佈,又名正態分佈或常態分佈
        
        mu is the mean, and sigma is the standard deviation.  This is  
        slightly faster than the normalvariate() function.
        
        Not thread-safe without a lock around calls.
        # mu為期望,sigma為方差,這個函數比normalvariate()函數速度要快一點點
        # 沒有線程調用,線程不安全。
        # 有兩個必傳參數,mu與sigma,
    
    getrandbits(...) method of Random instance  # 隨機實例的方法
        getrandbits(k) -> x.  Generates an int with k random bits.  # 以整型形式返回k個隨機位(二進位數)。如果處理的是真正的隨機事務(比如加密),這個函數尤為有用。
    
    getstate() method of Random instance  # 隨機實例的方法
        Return internal state; can be passed to setstate() later.  # 返回捕獲當前生成器內部狀態的對象.該對象可以用於函數setstate()來保存當前的狀態.
    
    lognormvariate(mu, sigma) method of Random instance  # 隨機實例的方法
        Log normal distribution.
        對數正態分佈(logarithmic normal distribution)是指一個隨機變數的對數服從正態分佈,則該隨機變數服從對數正態分佈。
        對數正態分佈從短期來看,與正態分佈非常接近。但長期來看,對數正態分佈向上分佈的數值更多一些。
        
        If you take the natural logarithm of this distribution, you'll get a
        normal distribution with mean mu and standard deviation sigma.
        mu can have any value, and sigma must be greater than zero.
        # 如果你對這個分佈的參數取自然對數,你會得到一個均數為mu,標準差為sigma的正態分佈。
        # mu參數可是任何值,sigma參數必須大於0
    
    normalvariate(mu, sigma) method of Random instance  # 隨機實例的方法
        Normal distribution.  # 常態分佈,又名正態分佈和高斯分佈
        
        mu is the mean, and sigma is the standard deviation.  # mu為期望,sigma為方差
    
    paretovariate(alpha) method of Random instance  # 隨機實例的方法
        Pareto distribution.  alpha is the shape parameter.  # 帕累托分佈;參數alpha為形狀參數
        # 帕累托分佈(Pareto distribution)是以義大利經濟學家維弗雷多·帕雷托命名的, 是從大量真實世界的現象中發現的冪次定律分佈,
        # 這個分佈在經濟學以外,也被稱為布拉德福分佈。帕累托因對義大利20%的人口擁有80%的財產的觀察而著名,後來被約瑟夫·朱蘭和
        # 其他人概括為帕累托法則(80/20法則),後來進一步概括為帕累托分佈的概念。

    
    randint(a, b) method of Random instance  # 隨機實例的方法
        Return random integer in range [a, b], including both end points.  # 返回a到b之間的一個隨機整數,可取中a和b
        # 必須傳入兩個參數,且a, b都必須是整數,可以為負整數,a參數必須小於等於b參數。
    
    random(...) method of Random instance  # 隨機實例的方法
        random() -> x in the interval [0, 1).  # 無參數,生成一個0-1之間的隨機數,可以是0,但不會生成1
    
    randrange(start, stop=None, step=1, _int=<class 'int'>) method of Random instance  # 隨機實例的方法
        Choose a random item from range(start, stop[, step]).  # 隨機從一個範圍中選取一個參數
        
        This fixes the problem with randint() which includes the  # 這個函數修複了randint()中能取到範圍右邊的數字的情況
        endpoint; in Python this is usually not what you want.    # randint()可以取到右邊範圍數字的情況通常是很多人不願意看到的
        參數必須為整數,start要小於stop參數
    
    sample(population, k) method of Random instance  # 隨機實例的方法
        Chooses k unique random elements from a population sequence or set. # 從一個population序列或集合中取出k個隨機元素
        
        Returns a new list containing elements from the population while    # 返還一個包含上述元素的列表,原序列或集合不會改變。
        leaving the original population unchanged.  The resulting list is 
        in selection order so that all sub-slices will also be valid random # 返還的列表是按挑選的先後順序排列的。這樣的話,所有子切片也將是合法的隨機樣本。
        samples.  This allows raffle winners (the sample) to be partitioned # 這樣做允許樣本中的被選中的幸運兒能按第一名第二名這樣的順序排列(在返還的列表中)
        into grand prize and second place winners (the subslices).
        
        Members of the population need not be hashable or unique.  If the   # population序列中的成員不需要是可哈希的或者是不重樣的。
        population contains repeats, then each occurrence is a possible     # 如果population序列包含重覆的成員,那麼每次的選取都會是樣本中可能的選擇
        selection in the sample.
        
        To choose a sample in a range of integers, use range as an argument # 為了在一個整數範圍內選擇一個樣本,請使用範圍值作為一個參數。
        This is especially fast and space efficient for sampling from a     # 當從龐大數據中取樣時這樣做將會非常快速並且節省記憶體
        large population:   sample(range(10000000), 60)                     # 示例:sample(range(10000000), 60)
    
    seed(a=None, version=2) method of Random instance  # 隨機實例的方法
        Initialize internal state from hashable object.                   # 通過可哈希對象初始化內部狀態
        
        None or no argument seeds from current time or from an operating  # 參數為None或無參數的情況下,則seeds根據當前時間來自己選擇這個值
        system specific randomness source if available.                   # 或從系統特定的隨機性源中取值(如果條件可行)
        
        If *a* is an int, all bits are used.                              # 如果參數a為整型,所有的bits位都將被使用
        
        For version 2 (the default), all of the bits are used if *a* is a str,  # 當version參數為2(預設參數),如果參數a是一個字元串類型,bytes或bytearray,則所有的bits位都將被使用
        bytes, or bytearray.  For version 1 (provided for reproducing random    # 當version參數為1時(提供從老版本python中重新生成的隨機序列)
        sequences from older versions of Python), the algorithm for str and     # 通過對str,bytes的演算法生成一個窄範圍的種子。
        bytes generates a narrower range of seeds.
    
    setstate(state) method of Random instance  # 隨機實例的方法
        Restore internal state from object returned by getstate().  # 保存getstate()取得並返回的對象。
    
    shuffle(x, random=None) method of Random instance  # 隨機實例的方法
        Shuffle list x in place, and return None.  # 打亂列表x並返回None  x為必傳列表參數
        
        Optional argument random is a 0-argument function returning a  # 可選參數為一個不需參數的返回0-1之間浮點數的函數
        random float in [0.0, 1.0); if it is the default None, the     # 如果可選參數為預設的None,則它會使用random.random函數方法
        standard random.random will be used.
        如果你有一個更好的隨機數生成器,或者說你有一個適合自己應用的隨機數發生器,那麼你就可以使用它而不是使用系統預設那個。
    
    triangular(low=0.0, high=1.0, mode=None) method of Random instance  # 隨機實例的方法
        Triangular distribution.  # 三角分佈(triangular distribution),亦稱辛普森分佈或三角形分佈
        
        Continuous distribution bounded by given lower and upper limits,  # 三角形分佈是低限為low、上限為high、眾數預設為兩者平均數的連續概率分佈。
        and having a given mode value in-between.
        
        http://en.wikipedia.org/wiki/Triangular_distribution
    
    uniform(a, b) method of Random instance  # 隨機實例的方法
        Get a random number in the range [a, b) or [a, b] depending on rounding.  # 從a與b之間取一個隨機數,一定可以取到a,b能否取到看b的舍入
        a b兩個參數必須有,可為整型可為浮點型,目前本人知道的取到b的方法的用math.ceil
        這個方法返回的是一個隨機數
    
    vonmisesvariate(mu, kappa) method of Random instance  # 隨機實例的方法
        Circular data distribution.  # 迴圈數據分佈或馮·米塞斯分佈
        
        mu is the mean angle, expressed in radians between 0 and 2*pi, and
        kappa is the concentration parameter, which must be greater than or
        equal to zero.  If kappa is equal to zero, this distribution reduces
        to a uniform random angle over the range 0 to 2*pi.
        # mu 是位置的度量,它的聚會在0-2*pi之間,kappa是集中度的度量,它必須大於或等於0。
        # 如果kappa等於0,這個分佈是均勻分佈,對於κ很小的情形,分佈近似均勻分佈,其位置度量在0-2*pi之間

    
    weibullvariate(alpha, beta) method of Random instance
        Weibull distribution.  # 韋布爾分佈
        
        alpha is the scale parameter and beta is the shape parameter.  # λ>0是比例參數(scale parameter),k>0是形狀參數(shape parameter)
        # 在這裡alpha是比例參數,beta是形狀參數
        威布爾分佈(Weibull distribution),又稱韋伯分佈或韋布爾分佈,是可靠性分析和壽命檢驗的理論基礎。
        威布爾分佈:在可靠性工程中被廣泛應用,尤其適用於機電類產品的磨損累計失效的分佈形式。由於它可以利用概率值很容易地推斷出它的分佈參數,
        被廣泛應用於各種壽命試驗的數據處理。


  參考:http://blog.csdn.net/zheng_lan_fang/article/details/76684761

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文涉及到的知識:Struts2超鏈接的使用、Struts遍歷List、${pageContext.request.contextPath} 不能出現在Struts2標簽中。 ...
  • 前言 為何使用Python Python 是一種效率極高的語言。與其他眾多的語言相比,實現相同功能,使用Python編寫的程式包含的代碼更少。Python的語法簡單,易上手,使用Python編寫的代碼更容易閱讀、調試和擴展。 Python使用領域也比較多。Python應用領域有:雲計算、人工智慧、大 ...
  • 隨筆之java匿名內部類 從今天起開始每日一篇技術博客,當然這隻是我當天所學的一些隨筆,裡面或多或少會有理解不當的地方,希望大家多多指教,一起進步! 在講匿名內部類之前,先講講內部類的一些概念。 1.內部類:顧名思義,內部類就是寫在一個類裡面的類(廢話),這裡大家可能會問了,為什麼我們不直接寫一個c ...
  • 三、tornado.web.Application 1、Application:tornado.web.Aplication新建一個應用,可通過直接實例化這個類或實例化它的子類來新建應用; 2、handlers:實例化時至少需要傳入參數handlers,handlers為元素為元組的列表,元組中第一 ...
  • 周末真的是懶到心慌。。。。。。 本文是在完整s2sh項目基礎上添加的,不太瞭解s2sh項目構建的朋友可以先參考一下這幾篇文章: eclipse環境下基於tomcat-7.0.82構建struts2項目 eclipse環境下基於已構建struts2項目整合spring+hibernate 基於已構建S ...
  • 在Web開發過程中離不開數據的交互,這就需要規定交互數據的相關格式,以便數據在客戶端與伺服器之間進行傳遞。數據的格式通常有2種:1、xml;2、JSON。通常來說都是使用JSON來傳遞數據。本文正是介紹在Java中JSON與對象之間互相轉換時遇到的幾個問題以及相關的建議。 首先明確對於JSON有兩個 ...
  • File的知識 ...
  • 迭代器的方式會產生鎖定 伺服器端增加發送給每個客戶端已收到信息的功能 所以當獲取到一個socket,並打開它的線程進行迴圈接收客戶端發來信息時,我們把這個內部類的線程Client保存到集合List<Client>中 然後在讀取到客戶端信息後,把這個信息發送給所有埠 通過迴圈 for(int i=0 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...