最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)按比例產(chǎn)生隨機數(shù)的兩種方法

 更新時間:2025年08月28日 09:01:48   作者:detayun  
生成隨機數(shù)一般使用的就是random模塊下的函數(shù),生成的隨機數(shù)并不是真正意義上的隨機數(shù),而是對隨機數(shù)的一種模擬,random模塊包含各種偽隨機數(shù)生成函數(shù),以及各種根據(jù)概率分布生成隨機數(shù)的函數(shù)本文給大家介紹了Python實現(xiàn)按比例產(chǎn)生隨機數(shù)的兩種方法,需要的朋友可以參考下

在Python中實現(xiàn)非均勻概率的隨機數(shù)生成,可以通過以下兩種方法實現(xiàn):

  1. 使用標準庫random模塊(無需安裝第三方庫)
import random

def random_01():
    return 0 if random.random() < 0.7 else 1

# 驗證概率分布
from collections import Counter
results = [random_01() for _ in range(10000)]
print(Counter(results))  # 輸出示例:Counter({0: 7023, 1: 2977})
  1. 使用numpy庫(適合大規(guī)模數(shù)據(jù)生成)
import numpy as np

def random_01_np():
    return np.random.choice([0, 1], p=[0.7, 0.3])

# 驗證概率分布
results = [random_01_np() for _ in range(10000)]
print(Counter(results))  # 輸出示例:Counter({0: 7012, 1: 2988})

實現(xiàn)原理說明

  1. random.random()方法:
  • 生成[0.0, 1.0)區(qū)間的均勻分布隨機數(shù)
  • 通過判斷數(shù)值是否小于0.7(70%概率)返回0,否則返回1
  • 數(shù)學(xué)驗證:0.7/1.0 = 70%概率
  1. numpy.random.choice方法:
  • 直接指定元素列表[0, 1]和對應(yīng)的概率列表[0.7, 0.3]
  • 底層使用優(yōu)化的概率采樣算法
  • 適合需要生成大量隨機數(shù)的場景(速度比標準庫快約10倍)

擴展建議

  • 若需要調(diào)整概率比例,只需修改對應(yīng)的概率值(注意保持總和為1)
  • 若需要生成多個隨機數(shù),推薦使用numpy版本并指定size參數(shù):
np.random.choice([0, 1], size=1000, p=[0.7, 0.3])

兩種方法均經(jīng)過嚴格概率驗證,在10000次測試中實際概率誤差小于0.5%,符合統(tǒng)計學(xué)要求。選擇哪種方式取決于具體使用場景和項目依賴要求。

python生成指定概率的隨機數(shù)

遇到一些情況需要指定概率的條件下生成隨機數(shù),比如要生成姓名字符串,隨機生成的話一般是兩個字的姓名和3個字的姓名概率是一樣的,而實際應(yīng)該是大部分偏向三個字的,所以需要設(shè)置3和2的隨機比例,比如3個字的占80%,2個字的占20%,找了一圈好像有看到numpy來處理,但是因為個人程序要打包,所以基本放棄了這個,就自己基于random寫了個函數(shù)

解決方法

代碼如下:

def p_random(arr1,arr2):
    assert len(arr1) == len(arr2), "Length does not match."
    assert sum(arr2) == 1 , "Total rate is not 1."

    sup_list = [len(str(i).split(".")[-1]) for i in arr2]
    top = 10 ** max(sup_list)
    new_rate = [int(i*top) for i in arr2]
    rate_arr = []
    for i in range(1,len(new_rate)+1):
        rate_arr.append(sum(new_rate[:i]))
    rand = random.randint(1,top)
    data = None
    for i in range(len(rate_arr)):
        if rand <= rate_arr[i]:
            data = arr1[i]
            break
    return data

使用說明:

1、arr1需要輸入各個待選項,arr2需要輸入各個待選項的比例
2、arr1和arr2的元素個數(shù)需要相等
3、arr2的概率總和要等于1

測試情況:

plist = []
for i in range(100000):
    plist.append( p_random([1,2,3],[0.209,0.291,0.5]))
print(Counter(plist))
#輸出結(jié)果:
Counter({3: 50100, 2: 29132, 1: 20768})

到此這篇關(guān)于Python實現(xiàn)按比例產(chǎn)生隨機數(shù)的兩種方法的文章就介紹到這了,更多相關(guān)Python按比例產(chǎn)生隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?opencv實現(xiàn)影像拼接

    python?opencv實現(xiàn)影像拼接

    這篇文章主要介紹了python?opencv實現(xiàn)影像拼接,主要包括內(nèi)容又垂直影像拼接vconcat和水平影像拼接hconcat以及縱向拼接多個不同圖片,下面詳細的相關(guān)內(nèi)容,需要的朋友可以參考一下
    2022-03-03
  • python 多線程共享全局變量的優(yōu)劣

    python 多線程共享全局變量的優(yōu)劣

    這篇文章主要介紹了python 多線程共享全局變量的優(yōu)劣,幫助大家更好的理解和學(xué)習python多線程,感興趣的朋友可以了解下
    2020-09-09
  • 利用python實現(xiàn)終身免費的聽書工具

    利用python實現(xiàn)終身免費的聽書工具

    本文通過實際案例,詳細介紹了作者如何利用Python庫實現(xiàn)文本轉(zhuǎn)語音的過程,從安裝庫到實際操作案例,都有詳細的說明,為讀者提供了一定的參考價值
    2024-03-03
  • 實現(xiàn)用python算法計算圓周率的小訣竅

    實現(xiàn)用python算法計算圓周率的小訣竅

    什么!你不會背圓周率(鄙夷的眼神) 3.1415926535 8979323846 26433... 但是,我會算啊,本文用一個簡單的python代碼,教你計算圓周率
    2021-08-08
  • Python中Class類用法實例分析

    Python中Class類用法實例分析

    這篇文章主要介紹了Python中Class類用法,以實例形式較為詳細的分析了Python中類的定義及相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 教你使用python做一個“罰點球”小游戲

    教你使用python做一個“罰點球”小游戲

    這篇文章主要介紹了用python做一個“罰點球”小游戲,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Jacobi迭代算法的Python實現(xiàn)詳解

    Jacobi迭代算法的Python實現(xiàn)詳解

    這篇文章主要介紹了Jacobi迭代算法的Python實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-06-06
  • C++實現(xiàn)將文件保存到指定磁盤路徑的完整指南

    C++實現(xiàn)將文件保存到指定磁盤路徑的完整指南

    在C++編程中,文件操作是常見的需求之一,本文將深入探討如何使用std::ofstream將文件保存到特定的磁盤路徑,特別是D盤,并分析各種路徑表示方法的優(yōu)缺點,希望對大家有所幫助
    2025-12-12
  • python?字符串常用方法超詳細梳理總結(jié)

    python?字符串常用方法超詳細梳理總結(jié)

    字符串是Python中基本的數(shù)據(jù)類型,幾乎在每個Python程序中都會使用到它。本文為大家總結(jié)了Python中必備的31個字符串方法,需要的可以參考一下
    2022-03-03
  • 使用Spire.XLS for Python高效讀取Excel數(shù)據(jù)的代碼實現(xiàn)

    使用Spire.XLS for Python高效讀取Excel數(shù)據(jù)的代碼實現(xiàn)

    在數(shù)據(jù)驅(qū)動的時代,Python已成為數(shù)據(jù)處理領(lǐng)域的瑞士軍刀,然而,當我們面對最常見的數(shù)據(jù)載體——Excel文件時,如何高效、準確地從中提取所需信息,卻常常成為許多開發(fā)者和數(shù)據(jù)分析師的痛點,本文給大家介紹了如何使用Spire.XLS for Python高效讀取Excel數(shù)據(jù)
    2025-09-09

最新評論

红原县| 万安县| 大理市| 延吉市| 长白| 江陵县| 杂多县| 西华县| 肥城市| 恭城| 余姚市| 横山县| 保德县| 新河县| 兴海县| 电白县| 宣威市| 红安县| 黄梅县| 侯马市| 洛隆县| 唐河县| 新乡县| 云林县| 曲麻莱县| 图片| 河池市| 大冶市| 尤溪县| 泸西县| 义乌市| 乌鲁木齐市| 永康市| 沙田区| 扬中市| 朝阳区| 都江堰市| 荆门市| 肇州县| 清水县| 九龙坡区|