random(), randrange() සහ randint() ඇතුළුව Python හි අහඹු දශම සහ පූර්ණ සංඛ්‍යා ජනනය කිරීම

ව්යාපාරික

Python සම්මත පුස්තකාලයේ සසම්භාවී මොඩියුලයේ ඇති සසම්භාවී(), uniform(), randange(), සහ randint() ශ්‍රිත භාවිතයෙන් අහඹු සංඛ්‍යා ජනනය කළ හැක.

සසම්භාවී මොඩියුලය සම්මත පුස්තකාලයේ ඇතුළත් කර ඇත, එබැවින් අමතර ස්ථාපනයක් අවශ්ය නොවේ. ඇත්ත වශයෙන්ම, ඔබ එය ආනයනය කළ යුතුය.

පහත තොරතුරු මෙහි දක්වා ඇත.

  • random.random()(0.0 සහ 1.0 අතර පාවෙන ලක්ෂ්‍ය අංකය)
  • random.uniform()(පාවෙන ලක්ෂ්‍ය සංඛ්‍යාවල ඕනෑම පරාසයක්)
  • සාමාන්‍ය ව්‍යාප්තිය, Gaussian ව්‍යාප්තිය යනාදිය අනුගමනය කරන අහඹු සංඛ්‍යා ජනනය කරන්න.
  • random.randrange()(අත්තනෝමතික පරාසයේ සහ පියවරේ පූර්ණ සංඛ්‍යාව)
  • random.randint()(ඕනෑම පරාසයක පූර්ණ සංඛ්‍යාවක්)
  • මූලද්‍රව්‍ය ලෙස අහඹු සංඛ්‍යා සහිත ලැයිස්තුවක් ජනනය කිරීම
    • අහඹු පාවෙන ලක්ෂ්‍ය සංඛ්‍යා ලැයිස්තුව
    • නිඛිල අහඹු සංඛ්‍යා ලැයිස්තුව
  • අහඹු සංඛ්‍යා උත්පාදක යන්ත්‍රය ආරම්භ කරන්න (අහඹු අංක බීජය සවි කරන්න)

ලැයිස්තුවක මූලද්‍රව්‍ය අහඹු ලෙස උපුටා ගැනීම හෝ වර්ග කිරීම පිළිබඳ පහත ලිපිය බලන්න.

random.random()(0.0 සහ 1.0 අතර පාවෙන ලක්ෂ්‍ය අංකය)

සසම්භාවී මොඩියුලයේ ශ්‍රිතය සසම්භාවී() මඟින් 0.0 සහ 1.0 අතර වන පාවෙන ආකාරයේ අහඹු පාවෙන ලක්ෂ්‍ය සංඛ්‍යාවක් ජනනය කරයි.

import random

print(random.random())
# 0.4496839011176701

random.uniform()(පාවෙන ලක්ෂ්‍ය සංඛ්‍යාවල ඕනෑම පරාසයක්)

uniform(a, b)මෙම අහඹු මොඩියුලයේ ශ්‍රිතයන් පහත ඕනෑම පරාසයක අහඹු ලෙස පාවෙන ලක්ෂ්‍ය සංඛ්‍යා පාවෙන ආකාරයේ සංඛ්‍යා ජනනය කරයි.

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

තර්ක දෙක විශාල හෝ කුඩා විය හැක; ඔවුන් සමාන නම්, ඔවුන් ස්වභාවිකවම එම අගය ආපසු ලබා දෙනු ඇත. ප්‍රතිලාභ අගය සැමවිටම පාවෙන අගයකි.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

තර්කය පාවෙන ලෙසද දැක්විය හැක.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

b හි අගය පරාසයට ඇතුළත් කර තිබේද යන්න ලේඛනගත කර ඇති පරිදි පහත වට කිරීම මත රඳා පවතී.
a + (b-a) * random.random()

අන්ත ලක්ෂ්‍ය අගය b පරාසයේ තිබේද නැද්ද යන්න පහත සමීකරණයේ පාවෙන ලක්ෂ්‍ය වටය මත රඳා පවතී
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

සාමාන්‍ය ව්‍යාප්තිය, Gaussian ව්‍යාප්තිය යනාදිය අනුගමනය කරන අහඹු සංඛ්‍යා ජනනය කරන්න.

ඉහත සසම්භාවී() සහ ඒකාකාර() ශ්‍රිතයන් ඒකාකාරව බෙදා හරින ලද අහඹු සංඛ්‍යා උත්පාදනය කරයි, නමුත් පහත ව්‍යාප්තිය අනුගමනය කරන පාවෙන ලක්ෂ්‍ය සංඛ්‍යා උත්පාදනය කිරීමටද ශ්‍රිත ඇත.

  • බීටා බෙදා හැරීම:random.betavariate()
  • ඝාතීය ව්යාප්තිය:random.expovariate()
  • ගැමා බෙදා හැරීම:random.gammavariate()
  • Gaussian බෙදා හැරීම:random.gauss()
  • lognormal බෙදාහැරීම:random.lognormvariate()
  • සාමාන්ය බෙදාහැරීමේ:random.normalvariate()
  • Von Mises බෙදා හැරීම:random.vonmisesvariate()
  • පැරේටෝ බෙදා හැරීම:random.paretovariate()
  • Weibull බෙදා හැරීම:random.weibullvariate()

එක් එක් බෙදාහැරීමේ පරාමිතීන් තර්ක මගින් නියම කර ඇත. විස්තර සඳහා නිල ලේඛන බලන්න.

random.randrange()(අත්තනෝමතික පරාසයේ සහ පියවරේ පූර්ණ සංඛ්‍යාව)

randrange(start, stop, step)
මෙම අහඹු මොඩියුලයේ ශ්‍රිතය පහත සඳහන් මූලද්‍රව්‍ය වලින් අහඹු ලෙස තෝරාගත් මූලද්‍රව්‍යයක් ලබා දෙයි.
range(start, stop, step)

පරාසය() සමඟ මෙන්, තර්ක ආරම්භ වන අතර පියවර මඟ හැරිය හැක. ඒවා ඉවත් කර ඇත්නම්, start=0 සහ step=1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

තර්ක පියවර ඉරට්ටේ හෝ ඔත්තේ සසම්භාවී නිඛිලයක් හෝ තුනක ගුණාකාරයක් වන සසම්භාවී නිඛිලයක් ජනනය කිරීමට සැකසිය හැක.

උදාහරණයක් ලෙස, ආරම්භය ඉරට්ටේ නම් සහ පියවර=2 නම්, අහඹු ලෙස ලබා ගත හැක්කේ පරාසයේ පූර්ණ සංඛ්‍යා පමණි.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(ඕනෑම පරාසයක පූර්ණ සංඛ්‍යාවක්)

randint(a, b)
මෙම සසම්භාවී මොඩියුලයේ ශ්‍රිතය පහත සසම්භාවී පූර්ණ සංඛ්‍යාව ලබා දෙයි.
a <= n <= b
randrange(a, b + 1)මෙයට සමාන; b හි අගය ද පරාසයට ඇතුළත් වන බව සලකන්න.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

මූලද්‍රව්‍ය ලෙස අහඹු සංඛ්‍යා සහිත ලැයිස්තුවක් ජනනය කිරීම

මෙම කොටසේදී, සසම්භාවී සංඛ්‍යා මූලද්‍රව්‍ය ලෙස ඇති ලැයිස්තුවක් ජනනය කිරීම සඳහා සම්මත පුස්තකාලයේ අහඹු මොඩියුලය භාවිතා කරන්නේ කෙසේදැයි අපි පැහැදිලි කරන්නෙමු.

පාවෙන ලක්ෂ්‍ය floats සහිත අහඹු සංඛ්‍යා ලැයිස්තුව

පාවෙන ලක්ෂ්‍ය සසම්භාවී සංඛ්‍යා වන මූලද්‍රව්‍ය සහිත ලැයිස්තුවක් උත්පාදනය කිරීමට, සසම්භාවී() සහ ඒකාකාර() ශ්‍රිතයන් ලැයිස්තු අවබෝධතා අංකනය සමඟ ඒකාබද්ධ කරන්න.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

ඉහත උදාහරණයේ, පරාසය() භාවිතා වේ, නමුත් ලැයිස්තු සහ ටියුපල් ද අපේක්ෂිත මූලද්‍රව්‍ය සංඛ්‍යාව සඳහා හැකිය. ලැයිස්තු අවබෝධතා පිළිබඳ වැඩි විස්තර සඳහා කරුණාකර පහත ලිපිය බලන්න.

පූර්ණ සංඛ්‍යා සසම්භාවී සංඛ්‍යා ලැයිස්තුව

මූලද්‍රව්‍ය නිඛිල සසම්භාවී සංඛ්‍යා වන ලැයිස්තුවක් ජනනය කිරීමේදී, ඉහත randange() සහ randint() ලැයිස්තු අවබෝධතා අංකනය සමඟ ඒකාබද්ධ කිරීමෙන් අනුපිටපත් අගයන් ඇති විය හැක.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

ඔබට අනුපිටපත් කිරීමකින් තොරව නිඛිලවල අහඹු අනුක්‍රමයක් සෑදීමට අවශ්‍ය නම්, random.sample() භාවිතයෙන් අත්තනෝමතික පරාසයක් සමඟ පරාසය() හි මූලද්‍රව්‍ය උපුටා ගන්න.

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

Random.sample() පිළිබඳ වැඩි විස්තර සඳහා කරුණාකර පහත ලිපිය බලන්න.

අහඹු සංඛ්‍යා උත්පාදක යන්ත්‍රය ආරම්භ කරන්න (අහඹු අංක බීජය සවි කරන්න)

සසම්භාවී මොඩියුලයේ ශ්‍රිත බීජයට අත්තනෝමතික පූර්ණ සංඛ්‍යාවක් ලබා දීමෙන්, සසම්භාවී සංඛ්‍යා බීජය සවි කළ හැකි අතර සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්‍රය ආරම්භ කළ හැකිය.

එකම බීජය සමඟ ආරම්භ කිරීමෙන් පසුව, අහඹු අගය සෑම විටම එකම ආකාරයෙන් ජනනය වේ.

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025
Copied title and URL