From 78a4d7a96e2adeec1751776b5912dbbe50d99fac Mon Sep 17 00:00:00 2001 From: "Dr.XYZ" Date: Fri, 7 Mar 2025 11:31:30 +0000 Subject: [PATCH 1/3] translate --- library/random.po | 191 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 170 insertions(+), 21 deletions(-) diff --git a/library/random.po b/library/random.po index a2417c7d11..eed481b095 100644 --- a/library/random.po +++ b/library/random.po @@ -3,13 +3,14 @@ # # Translators: # Allen Wu , 2021 +# Dr.XYZ , 2025 msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-27 00:14+0000\n" -"PO-Revision-Date: 2023-01-23 22:47+0800\n" -"Last-Translator: Allen Wu \n" +"PO-Revision-Date: 2025-03-07 19:17+0800\n" +"Last-Translator: Dr.XYZ \n" "Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-" "tw)\n" "Language: zh_TW\n" @@ -17,11 +18,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #: ../../library/random.rst:2 msgid ":mod:`!random` --- Generate pseudo-random numbers" -msgstr ":mod:`!random` --- 生成偽隨機數" +msgstr ":mod:`!random` --- 產生偽隨機數" #: ../../library/random.rst:7 msgid "**Source code:** :source:`Lib/random.py`" @@ -51,7 +52,7 @@ msgid "" "generating distributions of angles, the von Mises distribution is available." msgstr "" "在實數線上,有一些函式用於處理均勻分佈、常態分佈(高斯分佈)、對數常態分佈、" -"負指數分佈、gamma 分佈和 Beta 分佈。對於生成角度分佈,可以使用馮·米塞斯分佈 " +"負指數分佈、gamma 分佈和 Beta 分佈。對於產生角度分佈,可以使用馮·米塞斯分佈 " "(von Mises distribution)。" #: ../../library/random.rst:23 @@ -66,7 +67,7 @@ msgid "" "purposes, and is completely unsuitable for cryptographic purposes." msgstr "" "幾乎所有 module 函式都相依於基本函式 :func:`.random`,此函式在半開放範圍 " -"``0.0 <= X < 1.0`` 內均勻地生成一個隨機 float(浮點數)。Python 使用 " +"``0.0 <= X < 1.0`` 內均勻地產生一個隨機 float(浮點數)。Python 使用 " "Mersenne Twister(梅森旋轉演算法)作為核心的產生器,它產生 53 位元精度 " "float,其週期為 2\\*\\*19937-1,透過 C 語言進行底層的實作既快速又支援執行緒安" "全 (threadsafe)。Mersenne Twister 是現存最廣泛被驗證的隨機數產生器之一,但是" @@ -137,6 +138,9 @@ msgid "" "contention and poor performance. Consider using separate instances of :class:" "`Random` per thread instead." msgstr "" +"全局隨機數產生器和 :class:`Random` 的實例是執行緒安全的。然而,在自由執行緒構" +"建中,對全局產生器或同一 :class:`Random` 實例的並發調用可能會遇到爭用和性能不" +"佳。請考慮改為每個執行緒使用單獨的 :class:`Random` 實例。" #: ../../library/random.rst:70 msgid "Bookkeeping functions" @@ -177,7 +181,7 @@ msgid "" "generates a narrower range of seeds." msgstr "" "若使用版本 1(為復現於舊版本 Python 中產生隨機序列而提供),:class:`str` 和 :" -"class:`bytes` 的演算法會生成範圍更窄的種子 (seed)。" +"class:`bytes` 的演算法會產生範圍更窄的種子 (seed)。" #: ../../library/random.rst:90 msgid "" @@ -816,6 +820,31 @@ msgid "" ">>> sample([10, 20, 30, 40, 50], k=4) # Four samples without replacement\n" "[40, 10, 50, 30]" msgstr "" +">>> random() # 隨機浮點數:0.0 <= x < 1.0\n" +"0.37444887175646646\n" +"\n" +">>> uniform(2.5, 10.0) # 隨機浮點數:2.5 <= x <= 10.0\n" +"3.1800146073117523\n" +"\n" +">>> expovariate(1 / 5) # 到達間隔平均為 5 秒\n" +"5.148957571865031\n" +"\n" +">>> randrange(10) # 0 到 9(含)的整數\n" +"7\\n\n" +"\n" +">>> randrange(0, 101, 2) # 0 到 100(含)的偶數整數\n" +"26\\n\n" +"\n" +">>> choice(['win', 'lose', 'draw']) # 從序列中隨機選取單一元素\n" +"'draw'\n" +"\n" +">>> deck = 'ace two three four'.split()\n" +">>> shuffle(deck) # 打亂串列\n" +">>> deck\n" +"['four', 'two', 'ace', 'three']\n" +"\n" +">>> sample([10, 20, 30, 40, 50], k=4) # 四個無替換的樣本\n" +"[40, 10, 50, 30]" #: ../../library/random.rst:510 msgid "Simulations::" @@ -846,6 +875,27 @@ msgid "" ">>> sum(trial() for i in range(10_000)) / 10_000\n" "0.7958" msgstr "" +">>> # 六次輪盤旋轉(有放回的加權抽樣)\n" +">>> choices(['red', 'black', 'green'], [18, 18, 2], k=6)\n" +"['red', 'green', 'black', 'black', 'red', 'black']\n" +"\n" +">>> # 從一副 52 張撲克牌中無放回發 20 張牌\n" +">>> # 並確定具有十點值的牌的比例:十、傑克、王后或國王\n" +">>> deal = sample(['tens', 'low cards'], counts=[16, 36], k=20)\n" +">>> deal.count('tens') / 20\n" +"0.15\n" +"\n" +">>> # 估計從 7 次旋轉中得到 5 次或更多正面的概率\n" +">>> # 使用一枚 60% 概率為正面的偏幣\n" +">>> sum(binomialvariate(n=7, p=0.6) >= 5 for i in range(10_000)) / 10_000\n" +"0.4169\n" +"\n" +">>> # 計算 5 個樣本的中位數位於中間兩個四分位數的概率\n" +">>> def trial():\n" +"... return 2_500 <= sorted(choices(range(10_000), k=5))[2] < 7_500\n" +"...\n" +">>> sum(trial() for i in range(10_000)) / 10_000\n" +"0.7958" #: ../../library/random.rst:535 msgid "" @@ -916,6 +966,26 @@ msgid "" "print(f'hypothesis that there is no difference between the drug and the " "placebo.')" msgstr "" +"# 範例來自 Dennis Shasha 和 Manda Wilson 的 \\\"Statistics is Easy\\\"\n" +"from statistics import fmean as mean\n" +"from random import shuffle\n" +"\n" +"drug = [54, 73, 53, 70, 73, 68, 52, 65, 65]\n" +"placebo = [54, 51, 58, 44, 55, 52, 42, 47, 58, 46]\n" +"observed_diff = mean(drug) - mean(placebo)\n" +"\n" +"n = 10_000\n" +"count = 0\n" +"combined = drug + placebo\n" +"for i in range(n):\n" +" shuffle(combined)\n" +" new_diff = mean(combined[:len(drug)]) - mean(combined[len(drug):])\n" +" count += (new_diff >= observed_diff)\n" +"\n" +"print(f'{n} 次標籤重新洗牌僅產生 {count} 個差異實例')\n" +"print(f'至少與觀察到的差異 {observed_diff:.1f} 一樣極端。')\n" +"print(f'單邊 p 值 {count / n:.4f} 使我們拒絕無效假設')\n" +"print(f'即藥物與安慰劑之間沒有差異。')" #: ../../library/random.rst:575 msgid "" @@ -950,6 +1020,31 @@ msgid "" "print(f'Mean wait: {mean(waits):.1f} Max wait: {max(waits):.1f}')\n" "print('Quartiles:', [round(q, 1) for q in quantiles(waits)])" msgstr "" +"from heapq import heapify, heapreplace\n" +"from random import expovariate, gauss\n" +"from statistics import mean, quantiles\n" +"\n" +"average_arrival_interval = 5.6\n" +"average_service_time = 15.0\n" +"stdev_service_time = 3.5\n" +"num_servers = 3\n" +"\n" +"waits = []\n" +"arrival_time = 0.0\n" +"servers = [0.0] * num_servers # 每個伺服器可用的時間\n" +"heapify(servers)\n" +"for i in range(1_000_000):\n" +" arrival_time += expovariate(1.0 / average_arrival_interval)\n" +" next_server_available = servers[0]\n" +" wait = max(0.0, next_server_available - arrival_time)\n" +" waits.append(wait)\n" +" service_duration = max(0.0, gauss(average_service_time, " +"stdev_service_time))\n" +" service_completed = arrival_time + wait + service_duration\n" +" heapreplace(servers, service_completed)\n" +"\n" +"print(f'平均等待時間:{mean(waits):.1f} 最大等待時間:{max(waits):.1f}')\n" +"print('四分位數:', [round(q, 1) for q in quantiles(waits)])" #: ../../library/random.rst:604 msgid "" @@ -1028,6 +1123,31 @@ msgid "" " indices = sorted(random.choices(range(n), k=r))\n" " return tuple(pool[i] for i in indices)" msgstr "" +"def random_product(*args, repeat=1):\n" +" \"從 itertools.product(*args, **kwds) 中隨機選擇\"\n" +" pools = [tuple(pool) for pool in args] * repeat\n" +" return tuple(map(random.choice, pools))\n" +"\n" +"def random_permutation(iterable, r=None):\n" +" \"從 itertools.permutations(iterable, r) 中隨機選擇\"\n" +" pool = tuple(iterable)\n" +" r = len(pool) if r is None else r\n" +" return tuple(random.sample(pool, r))\n" +"\n" +"def random_combination(iterable, r):\n" +" \"從 itertools.combinations(iterable, r) 中隨機選擇\"\n" +" pool = tuple(iterable)\n" +" n = len(pool)\n" +" indices = sorted(random.sample(range(n), r))\n" +" return tuple(pool[i] for i in indices)\n" +"\n" +"def random_combination_with_replacement(iterable, r):\n" +" \"有放回地選擇 r 個元素。結果按可迭代物件排序。\"\n" +" # 結果將在 set(itertools.combinations_with_replacement(iterable, r)) 中\n" +" pool = tuple(iterable)\n" +" n = len(pool)\n" +" indices = sorted(random.choices(range(n), k=r))\n" +" return tuple(pool[i] for i in indices)" #: ../../library/random.rst:659 msgid "" @@ -1131,64 +1251,64 @@ msgstr "" #: ../../library/random.rst:713 msgid "Command-line usage" -msgstr "" +msgstr "命令行使用" #: ../../library/random.rst:717 msgid "The :mod:`!random` module can be executed from the command line." -msgstr "" +msgstr ":mod:`!random` 模組可以從命令行執行。" #: ../../library/random.rst:719 msgid "" "python -m random [-h] [-c CHOICE [CHOICE ...] | -i N | -f N] [input ...]" msgstr "" +"python -m random [-h] [-c CHOICE [CHOICE ...] | -i N | -f N] [input ...]" #: ../../library/random.rst:723 -#, fuzzy msgid "The following options are accepted:" -msgstr "以下函式產生離散分佈。" +msgstr "接受以下選項:" #: ../../library/random.rst:729 msgid "Show the help message and exit." -msgstr "" +msgstr "顯示幫助訊息並退出。" #: ../../library/random.rst:734 msgid "Print a random choice, using :meth:`choice`." -msgstr "" +msgstr "列印一個隨機選擇,使用 :meth:`choice`。" #: ../../library/random.rst:739 msgid "" "Print a random integer between 1 and N inclusive, using :meth:`randint`." -msgstr "" +msgstr "列印 1 到 N(含)之間的隨機整數,使用 :meth:`randint`。" #: ../../library/random.rst:744 msgid "" "Print a random floating-point number between 0 and N inclusive, using :meth:" "`uniform`." -msgstr "" +msgstr "列印 0 到 N(含)之間的隨機浮點數,使用 :meth:`uniform`。" #: ../../library/random.rst:747 msgid "If no options are given, the output depends on the input:" -msgstr "" +msgstr "如果未給定選項,則輸出取決於輸入:" #: ../../library/random.rst:749 msgid "String or multiple: same as :option:`--choice`." -msgstr "" +msgstr "字串或多個:與 :option:`--choice` 相同。" #: ../../library/random.rst:750 msgid "Integer: same as :option:`--integer`." -msgstr "" +msgstr "整數:與 :option:`--integer` 相同。" #: ../../library/random.rst:751 msgid "Float: same as :option:`--float`." -msgstr "" +msgstr "浮點數:與 :option:`--float` 相同。" #: ../../library/random.rst:756 msgid "Command-line example" -msgstr "" +msgstr "命令行範例" #: ../../library/random.rst:758 msgid "Here are some examples of the :mod:`!random` command-line interface:" -msgstr "" +msgstr "以下是 :mod:`!random` 命令行界面的一些範例:" #: ../../library/random.rst:760 msgid "" @@ -1222,3 +1342,32 @@ msgid "" "$ python -m random --float 6\n" "3.1942323316565915" msgstr "" +"$ # 隨機選擇一個\n" +"$ python -m random egg bacon sausage spam \\\"Lobster Thermidor aux " +"crevettes with a Mornay sauce\\\"\n" +"Lobster Thermidor aux crevettes with a Mornay sauce\n" +"\n" +"$ # 隨機整數\n" +"$ python -m random 6\n" +"6\n" +"\n" +"$ # 隨機浮點數\n" +"$ python -m random 1.8\n" +"1.7080016272295635\n" +"\n" +"$ # 使用明確的引數\n" +"$ python -m random --choice egg bacon sausage spam \\\"Lobster Thermidor " +"aux crevettes with a Mornay sauce\\\"\n" +"egg\n" +"\n" +"$ python -m random --integer 6\n" +"3\n" +"\n" +"$ python -m random --float 1.8\n" +"1.5666339105010318\n" +"\n" +"$ python -m random --integer 6\n" +"5\n" +"\n" +"$ python -m random --float 6\n" +"3.1942323316565915" From bd8fb263afbc91aabd68cdcd5224d0230e732c51 Mon Sep 17 00:00:00 2001 From: "Dr.XYZ" Date: Sat, 8 Mar 2025 10:32:59 +0800 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: W. H. Wang --- library/random.po | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/library/random.po b/library/random.po index eed481b095..c9acd05970 100644 --- a/library/random.po +++ b/library/random.po @@ -138,8 +138,8 @@ msgid "" "contention and poor performance. Consider using separate instances of :class:" "`Random` per thread instead." msgstr "" -"全局隨機數產生器和 :class:`Random` 的實例是執行緒安全的。然而,在自由執行緒構" -"建中,對全局產生器或同一 :class:`Random` 實例的並發調用可能會遇到爭用和性能不" +"全域隨機數產生器和 :class:`Random` 的實例是執行緒安全的。然而,在自由執行緒構" +"建中,對全域產生器或同一 :class:`Random` 實例的並行呼叫可能會遇到爭用和性能不" "佳。請考慮改為每個執行緒使用單獨的 :class:`Random` 實例。" #: ../../library/random.rst:70 @@ -966,7 +966,7 @@ msgid "" "print(f'hypothesis that there is no difference between the drug and the " "placebo.')" msgstr "" -"# 範例來自 Dennis Shasha 和 Manda Wilson 的 \\\"Statistics is Easy\\\"\n" +"# 範例來自 Dennis Shasha 和 Manda Wilson 的 \"Statistics is Easy\"\n" "from statistics import fmean as mean\n" "from random import shuffle\n" "\n" @@ -1142,7 +1142,7 @@ msgstr "" " return tuple(pool[i] for i in indices)\n" "\n" "def random_combination_with_replacement(iterable, r):\n" -" \"有放回地選擇 r 個元素。結果按可迭代物件排序。\"\n" +" \"有放回地選擇 r 個元素。結果按可疊代物件排序。\"\n" " # 結果將在 set(itertools.combinations_with_replacement(iterable, r)) 中\n" " pool = tuple(iterable)\n" " n = len(pool)\n" @@ -1251,11 +1251,11 @@ msgstr "" #: ../../library/random.rst:713 msgid "Command-line usage" -msgstr "命令行使用" +msgstr "命令列用法" #: ../../library/random.rst:717 msgid "The :mod:`!random` module can be executed from the command line." -msgstr ":mod:`!random` 模組可以從命令行執行。" +msgstr ":mod:`!random` 模組可以從命令列執行。" #: ../../library/random.rst:719 msgid "" @@ -1304,11 +1304,11 @@ msgstr "浮點數:與 :option:`--float` 相同。" #: ../../library/random.rst:756 msgid "Command-line example" -msgstr "命令行範例" +msgstr "命令列範例" #: ../../library/random.rst:758 msgid "Here are some examples of the :mod:`!random` command-line interface:" -msgstr "以下是 :mod:`!random` 命令行界面的一些範例:" +msgstr "以下是 :mod:`!random` 命令列介面的一些範例:" #: ../../library/random.rst:760 msgid "" @@ -1343,8 +1343,8 @@ msgid "" "3.1942323316565915" msgstr "" "$ # 隨機選擇一個\n" -"$ python -m random egg bacon sausage spam \\\"Lobster Thermidor aux " -"crevettes with a Mornay sauce\\\"\n" +"$ python -m random egg bacon sausage spam \"Lobster Thermidor aux " +"crevettes with a Mornay sauce\"\n" "Lobster Thermidor aux crevettes with a Mornay sauce\n" "\n" "$ # 隨機整數\n" @@ -1356,8 +1356,8 @@ msgstr "" "1.7080016272295635\n" "\n" "$ # 使用明確的引數\n" -"$ python -m random --choice egg bacon sausage spam \\\"Lobster Thermidor " -"aux crevettes with a Mornay sauce\\\"\n" +"$ python -m random --choice egg bacon sausage spam \"Lobster Thermidor " +"aux crevettes with a Mornay sauce\"\n" "egg\n" "\n" "$ python -m random --integer 6\n" From 1579342c64696e0af54104f918d88e4a88d80ed5 Mon Sep 17 00:00:00 2001 From: "Dr.XYZ" Date: Sat, 8 Mar 2025 02:38:51 +0000 Subject: [PATCH 3/3] Unified "replacement" --- library/random.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/random.po b/library/random.po index c9acd05970..41ff2b3422 100644 --- a/library/random.po +++ b/library/random.po @@ -42,7 +42,7 @@ msgid "" "replacement." msgstr "" "對於整數,可以從範圍中進行均勻選擇。對於序列,有一個隨機元素的均勻選擇,一個" -"用來原地 (in-place) 產生隨機排列清單的函式,以及一個用來隨機取樣不替換的函" +"用來原地 (in-place) 產生隨機排列清單的函式,以及一個用來隨機取樣不重置的函" "式。" #: ../../library/random.rst:19 @@ -843,7 +843,7 @@ msgstr "" ">>> deck\n" "['four', 'two', 'ace', 'three']\n" "\n" -">>> sample([10, 20, 30, 40, 50], k=4) # 四個無替換的樣本\n" +">>> sample([10, 20, 30, 40, 50], k=4) # 四個無重置的樣本\n" "[40, 10, 50, 30]" #: ../../library/random.rst:510 @@ -875,11 +875,11 @@ msgid "" ">>> sum(trial() for i in range(10_000)) / 10_000\n" "0.7958" msgstr "" -">>> # 六次輪盤旋轉(有放回的加權抽樣)\n" +">>> # 六次輪盤旋轉(有重置的加權抽樣)\n" ">>> choices(['red', 'black', 'green'], [18, 18, 2], k=6)\n" "['red', 'green', 'black', 'black', 'red', 'black']\n" "\n" -">>> # 從一副 52 張撲克牌中無放回發 20 張牌\n" +">>> # 從一副 52 張撲克牌中無重置發 20 張牌\n" ">>> # 並確定具有十點值的牌的比例:十、傑克、王后或國王\n" ">>> deal = sample(['tens', 'low cards'], counts=[16, 36], k=20)\n" ">>> deal.count('tens') / 20\n" @@ -1142,7 +1142,7 @@ msgstr "" " return tuple(pool[i] for i in indices)\n" "\n" "def random_combination_with_replacement(iterable, r):\n" -" \"有放回地選擇 r 個元素。結果按可疊代物件排序。\"\n" +" \"有重置地選擇 r 個元素。結果按可疊代物件排序。\"\n" " # 結果將在 set(itertools.combinations_with_replacement(iterable, r)) 中\n" " pool = tuple(iterable)\n" " n = len(pool)\n"