Files
boc/aamos-ledger-rust/target/debug/deps/librand-5cebcdcbc836fca4.rmeta
T

2705 lines
653 KiB
Plaintext
Raw Normal View History

rust
¸2
#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Á rand_coreÁÌý¦î—W‹œ]TewÉ:-802030763b7da6caÁ getrandomÁ’ú§‰, iMjã¸íçG‡-3af6da94d21ddbadÁ®f©¾/ô)c§{õa“â‘-a3906971a93fd1b8Áæ\‹±ÔcdùÀTƒ-f86f80b348d33b13Á rand_chachaÁ£Ì±«õ-÷}­Í1-181890ec389f91c4Á
ppv_lite86Á<<rîd”Û Jøƒ¨x7qï-b7bc7268307ccbaaÁzerocopyÁ{£F™8ù£´ÉÒ6ñ°i-37880aa70dfe9a6cÁ
DeserializeÁ\ú»serdeÁŒÚ
SerializeÁL‡»ª
!
$Â.$·.testsÁ,Æ2$»2F
Ȼ
ŒìF¹
L™»ª
Fé
,Â7$·7T__m512iÁ<ÉìôœƒT__m128iÁ<„ìôœØT__m256iÁ<ìôT¾ ìõ´¡TÛ ìõ´üTø ìõT simd_implÁL'» simd_supportÁÄè&Té
,Œ-$-u LaneCountÁL£»è Ä÷u MaskElementÁ\®»è !#uSupportedLaneCountÁ”»»è GIu
Ȼ
ŒÖu¹
Ȼ
ué
,†T$ûS¨
»è Ĩ SimdElementÁ\ù»è "Ï
”†»è 7 simd_wmulÁLÇ&»è Ĩ&¨FloatSIMDScalarUtilsÁ¤Û=$Ã=¨Ó L½P»è Ä•PÆ$Å&$º&à
Ȼ
Œœà¹
Ȼ
àé
,€D$õCï DistributionÁdÙ»è Ä«ïStandardUniformÁ|ç»è &
»è ÄÍïÏ
”„»è ï
Ȼ
Œ ï¹
Ȼ
ïuniform_simd_int_implÁ¬½U»è Ä•Uïé
,õ±$ê±
\• »ª
Œõ ¹
 Ȼ
é
,¶? $«? ß
\ˆ'
Ȼ
Ώ&
ß¹
L•'
Ȼ
ßé
,Ȉ
$½ˆ

 Ȼ
Œ„ ¹
 Ȼ
$¹g $®g ÝSmallRngÁDÊ » small_rngÁ¬‹ ë$¡y
$y
¥$Ã=$¸=Ø
Ȼ
ŒÅع
Ȼ
¤smallÁ,© »é¬ ¤xoshiro128plusplusÁ” !»é¬¿ ¤xoshiro256plusplusÁ”ø!»é¬¾!â$‹$€ò$¤6$™6¤ÕDœ#»é¬ï"®$“P$ˆP¿$òx$çxBTreeSetÁDé»ÀŒ½
\™»ª
Œù¹
Ȼ
$•ˆ$Šˆ$‰:$þ9í¤ÀdistrÁ  bernoulliÁ



 ALWAYS_TRUEÁ
SCALEÁ
×

æ 
from_ratioÁ»
sampleÁ£  distributionÁ²!¥!Ô#£! sample_iterÁ%£!Ø''¤*¥**Ô-£//£/¥//ó / size_hintÁ66£6¥:::¥:¤:Ô?£ SampleStringÁA
append_stringÁB£A
sample_stringÁD£ floatÁFFFFFFFFFF IntoFloatÁPPinto_float_with_exponentÁF float_implsÁ ãTTTTTTTTTT T
T T T
TTdÔe£TgÔh£TjÔk£TmÔn£TpÔq£Timpl_int_from_uintÁT
impl_nzintÁ ¹
uuuuuuuuuu uÔ£GAP_SIZEÁu£uÔˆ£ˆRANGEÁˆGEN_ASCII_STR_CHARSETÁuŒÔ£óu£ u£uÔ˜£u
tuple_implÁu tuple_implsÁuœ¥œŸœ œÔ £    u¤¥¤Ô¦£ utilsÁ¨WideningMultiplyÁ©RHSÁ©°©wmulÁ¨ wmul_implÁ¨wmul_impl_largeÁ¨wmul_impl_usizeÁ¨FloatSIMDUtilsÁ°all_ltÁ°all_leÁ°
all_finiteÁ°MaskÁ°gt_maskÁ°decrease_maskedÁ°UIntÁ°
cast_from_intÁ¨ FloatAsSIMDÁ¹splatÁ¨ IntAsSIMDÁ»˜#¨¨¨
BoolAsSIMDÁ¿º¨Áº¨scalar_float_implÁ 
hidden_exportÁÄ žÆÆÆÆÆÆÆÍ'aÁÍ¥Íæ Í num_choicesÁÆÒË$Ò¥ÒÔÕ£Æ×ׯÆÚÛ£Û Ý  uniformÁ߸àààààààààà à
à àuniform_float_implÁßßintÁïïïïïïïïuniform_int_implÁïøSamplerÁïú©úæ üB1ÁüB2Áú
new_inclusiveÁÿ®'ÿ¸'úÔ£ú
sample_singleÁ£®'¸'  úsample_single_inclusiveÁУЮ'Џ'Š Š ßßßß¹
 žŠ'CHAR_SURROGATE_STARTÁCHAR_SURROGATE_LENÁchar_to_comp_u32Á£©£æ ¥®'¥¸'¥ £Â'©®'©¸'© £Ô­£¯°£²Š'´©´æ ®'¸'´Â'¹®'¹¸'¹ ´Ô½£ßßßßßß ß
ß ß ß
ßßßßÌ×ßßÏ©Ïæ Ñ®'Ѹ'ÏÂ'Ô®'Ô¸'ßש×ÔÙ£ß
SampleUniformÁÛŠ'ßUniformSamplerÁÝ©Ýæ ß®'߸'ÝÂ'â®'â¸'ÝÔå£Ý÷'ç£ç®'ç¸'Ý®(ë£ë®'ë¸'ßï©ïErrorÁïªßó©óÓ.óªß SampleBorrowÁ÷BorrowedÁ÷borrowÁßú™/ú©/ßý™/ý©/ß SampleRangeÁ¥÷'£is_emptyÁߥ÷'£Œ0ß Š¥Š÷'Œ£ŠŒ0ßimpl_sample_range_uÁ weightedÁweighted_indexÁ 
   © æ ¢š update_weightsÁ¤Ë$¤Ë$WeightedIndexIterÁ§Ë$§©§•1§Ö¬©¬×¯©¯ƒ²©²'bÁ²²ó ·©·weightÁ¹Ë$¹·weightsÁ¼Ë$· total_weightÁ¿©¿ÔÁ£Á WeightÁÅZEROÁÅchecked_add_assignÁimpl_weight_intÁimpl_weight_floatÁË×            
     
  ¥ ÝÝÝÝÝÝÝÝÝÝ Ý
Ý Ý rngÁëëëëëëëëëë ë
ë ëRngÁørandomÁù¥ø random_iterÁû¥ø random_rangeÁý¥ý£ø random_boolÁø random_ratioÁøÔ¥ø£¥øfillÁˆ¥ø5Š¥ø gen_rangeÁŒ¥Œ£øgen_boolÁø gen_ratioÁë£ëFillÁ®8£ëimpl_fill_eachÁë®8˜£ë__unsafeÁë impl_fillÁëë랥žŸž ž®8¢£rngsÁ¤ reseedingÁ¥¥¥¥¥¥¥¥¥¥ ¥
¥±£±RsdrÁ±æ ±reseedÁ¥£ ;next_u32Ánext_u64Á
fill_bytesÁ¥¼£¼ ;¼ƒ¥À£À ;¥Ã£Ã ;ÃÃResultsÁÃgenerateÁ¥É£É ;Éæ É´;Í Éreseed_and_generateÁ¥Ð£Ð ;Ѓ¥Ô£Ô ;¤¤mockÁØØØØÜæ ØÞ×;Þç;Þ÷;¤Àâââââââé×;éç;é÷;âíSeedÁî í from_seedÁ⤊òòòòòòòòòò òTHREAD_RNG_RESEED_THRESHOLDÁòþ´;ò×ò°6 ò>ò×;ç;÷;ò¤¤¤seqÁŽ coin_flipperÁ CoinFlipperÁ£°6chunkÁchunk_remainingÁ£æ random_ratio_one_overÁê7 flip_c_headsÁŽincreasing_uniformÁœœœœIncreasingUniformÁ £ °6 ¹ ®A »Aœ¦£¦æ ¦
next_indexÁ© œcalculate_bound_u32Á«innerÁ«RESULT2ÁŽû®®®®®IteratorRandomÁ³chooseÁ´£³
choose_stableÁ£ ³choose_multiple_fillÁ¹£³choose_multipleÁ»£®½šŽž¿¿¿¿¿¿¿¿¿¿ ¿
¿ ¿
IndexedRandomÁÌÌŒ0ÌŸDÏ£ÌûDÑ£Ìchoose_multiple_arrayÁÓ£ÓŸÓ Ó Ìchoose_weightedÁØ£ØØØ©ØØØØ Ìchoose_multiple_weightedÁá£áá©á ¿IndexedMutRandomÁæ
choose_mutÁç£æchoose_weighted_mutÁé£ééé©éééé ¿ SliceRandomÁòshuffleÁó£òpartial_shuffleÁõ£¿÷¥÷¿úIRÁ¿ü¥üƒIþ£üšI£¿Ë$¤¥ó  ˜¿ŠË$Š¤Š¥ŠŽindex_Á 
  
žžŒ0žÖžinto_vecÁ¢ ¢ žù¦IntoIterÁ¦¦êª«« « ¯÷±÷³³ó µµ µ ³˜»»ó ½½ ½ »˜ÁÔģį Æ ÄÉ sample_weightedÁË£ËË©sample_efraimidis_spirakisÁÏ£ÏϩϟÏÏÏÏElementÁן×Ö×keyÁÏÛŸÛï
ÏÞŸÞÏáŸáÏäŸÏ  sample_floydÁç£ç sample_inplaceÁê£ä"ìzeroÁìoneÁìas_usizeÁ ð¯Pð»PðÆP
ô¯Pô»PôÆPsample_rejectionÁø©ø£ŽŽŽŽŽŽŽŽÖ sample_arrayÁ£Ÿ   
thread_rngÁ 
  
‚7¥˜7¥³7¥£×7ê7®8œ¥
 BernoulliÁžp_intÁ

¡ƒ

¤×

 §
BernoulliErrorÁ©InvalidProbabilityÁª



 ­ƒ
 

°×

³
µÖIterÁ··£·¥·Ø·°6·phantomÁ¾¾£¾¥¾×MapÁÃÃÃ¥Ã¤ÃØÃfuncÁÃUËË˥ˤË×F OpenClosed01ÁÑ
FFÔƒFF××FÙ>FOpen01ÁÛ
FFÞƒFFá×F ã>F
ååÿF èÔé£F ëÔì£F
îÔï£FññÿFôÔõ£F÷Ôø£FúÔû£TýÔþ£TÔ£TƒÔ£TÔ£T ÔŠ£T
ŒÔ£T Ô£T Ô£T
Ô£T˜Ô£TÔœ£TžÔŸ£T¡Ô¢£T¤Ô¥£T§Ô¨£u AlphanumericÁª
u ¬×u
u ¯ƒu u
²>u
AlphabeticÁ´
u×uu¹ƒuu¼>u¾Ô¿£uÁÁÔãuÅÅÅÔÈ£uÊÊÊÊÔΣuÐÐÐÐÐÔÕ£u××××××ÔÝ£ußßßßßßßÔæ£uèèèèèèè˜èÔð£uòòòòòòò˜òòÔû£uýýýýýýý˜ýýšýÔ£u˜šÔ£u˜šœÔ¢ £u¤ ¤ ¤ ¤ ¤ ¤ ¤ ˜¤ ¤ 𤠤 œ¤ ¤ Ô± £¨³ °³ £!¨°£!¨¹ °¹ £!¨¼ °¼ £!¨¿ °¿ £!Á 
LOWER_MASKÁ¨Ã °Ã £!¨ Æ ²"Æ ä"Æ „"Æ "Æ  "Æ ¾"Æ Í"Æ ð"¨
¨ Ð ²"Ð ä"Ð „"Ð "Ð  "Ð ¾"Ð Í"Ð ð"¨ ÆChooseÁÚ Ë$Ú ¥Ú žÚ rangeÁÚ å$Æà Ë$à ¥à ׯä Ë$ä ¥ä ƒÆè Ë$è ¥ÆEmptyÁë
Æí ׯ Æ
ð ƒÆ à UniformFloatÁó ©ó lowÁó scaleÁà÷ ©÷ ƒàú ©àü ©ü ×àÿ ©à
©
à
 new_boundedÁà
Š'àˆ
©ˆ
æ Š
®'Š
¸'ˆ
Â'
®'
¸'ˆ
Ô
£ˆ
÷'
£
®'
¸'ˆ
®(
£
®'
¸'àš
îgà œ
Š'à
ž
©ž
æ  
®' 
¸'ž
Â'£
®'£
¸'ž
Ô¦
£ž
÷'¨
£¨
®'¨
¸'ž
®(¬
£¬
®'¬
¸'ï
UniformIntÁ°
©°
øf°
Âe°
threshÁïµ
©µ
ƒï¸
©ïº
©º
×ï½
©ï¿
©¿
ïÂ
©Â
ÖïÅ
Š'ï Ç
©Ç
æ É
®'É
¸'Ç
Â'Ì
®'Ì
¸'Ç
ÔÏ
£Ç
÷'Ñ
£Ñ
®'Ñ
¸'Ç
®(Õ
£Õ
®'Õ
¸'ï
Ù
Š'ï Û
©Û
æ Ý
®'Ý
¸'Û
Â'à
®'à
¸'Û
Ôã
£Û
÷'å
£å
®'å
¸'Û
®(é
£é
®'é
¸'ï í
Š'ï
ï
©ï
æ ñ
®'ñ
¸'ï
Â'ô
®'ô
¸'ï
Ô÷
£ï
÷'ù
£ù
®'ù
¸'ï
®(ý
£ý
®'ý
¸'ï Š'ïƒ ©ƒ æ  ®' ¸'ƒ Â'ˆ ®'ˆ ¸'ƒ Ô £ƒ ÷' £ ®' ¸'ƒ ®( £ ®' ¸'ï Š'ï © æ  ®' ¸' Â'œ ®'œ ¸' ÔŸ £ ÷'¡ £¡ ®'¡ ¸' ®(¥ £¥ ®'¥ ¸'ï© Š'ï« ©« æ ­ ®'­ ¸'« Â'° ®'° ¸'« Ô³ £« ÷'µ £µ ®'µ ¸'« ®(¹ £¹ ®'¹ ¸'ï½ Š'ï¿ ©¿ æ Á ®'Á ¸'¿ Â'Ä ®'Ä ¸'¿ ÔÇ £¿ ÷'É £É ®'É ¸'¿ ®(Í £Í ®'Í ¸'ïÑ Š'ïÓ ©Ó æ Õ ®'Õ ¸'Ó Â'Ø ®'Ø ¸'Ó ÔÛ £Ó ÷'Ý £Ý ®'Ý ¸'Ó ®(á £á ®'á ¸'ïå Š'ïç ©ç æ é ®'é ¸'ç Â'ì ®'ì ¸'ç Ôï £ç ÷'ñ £ñ ®'ñ ¸'ç ®(õ £õ ®'õ ¸'ïù Š'ïû ©û æ ý ®'ý ¸'û Â' ®' ¸'û Ôƒ £û ÷' £ ®' ¸'û ®( £ ®' ¸'ï UniformUsizeÁ øf Âe ìj mode64Áïï ƒïï ×ï ï! ï" Ö UniformCharÁ samplerÁ  ƒ£ × 
¦  ¨ ÖUniformDurationÁª modeÁª ž
 
® ƒ± ×´  ÖUniformDurationModeÁ¸ SmallÁ¹ secsÁ¹ nanosÁ¸ MediumÁ¼ ðz¸ LargeÁ¾ max_secsÁ¾  max_nanosÁ¾ äzÂ ×Æ ƒÉ Ë ÖßÓ.Í 
EmptyRangeÁÎ
Í  NonFiniteÁÐ
ß
ß Ó ƒß ß
Ö ×ßßÙ ßÛ ÖßUniformÁÝ
Ý ©Ý ˆßá ©á ƒßä ©ßæ ©æ ×ßé ©ßë ©ë ßî ©î Ößñ ÷'ò £ñ Œ0ßõ ÷'ö £õ Œ0ßù ÷'ú £ù Œ0ßý ÷'þ £ý Œ0ß
÷'
£
Œ0ß
÷'
£
Œ0ß
÷'Š
£
Œ0ß
÷'Ž
£
Œ0ß
÷'
£
Œ0ß 
÷'
£
Œ0ß!
÷'š
£
Œ0ß"
÷'ž
£
Œ0
WeightedIndexÁ¡
©¡
cumulative_weightsÁ¡
ø3¡
weight_distributionÁ¦
©¦
ש
©©
ƒ¬
© ®
©®
±
Á4±
Í4´
Á4´
Í4·
Á4·
Í4º
Á4º
Í4½
Á4½
Í4À
Á4À
Í4Ã
Á4Ã
Í4 Æ
Á4Æ
Í4
É
Á4É
Í4 Ì
Á4Ì
Í4 Ï
Á4Ï
Í4
Ò
Á4Ò
Í4Õ
Á4Õ
Í4Ø
Á4Ø
Í4Ó.Û
 InvalidInputÁÜ
Û

InvalidWeightÁÞ
Û
InsufficientNonZeroÁà
Û
OverflowÁâ
ä
×ç
đ
í
Ö Õï
  ò
ƒ  õ
× ÷
>ëù
®8ú
£ëü
®8ý
£ëÿ
®8£ë®8ƒ£œ®8£œˆ®8£œ®8Œ£œŽ®8£œ®8£œ®8£œ®8˜£œš®8£®8ž£ ®8¡££®8¤£¦®8§£©®8ª£¬®8­£¯®8°£²®8³£µ®8£ ¸®8¹£¥ ReseedingRngÁ»
»£» ;»ˆ¥À£À ;À×¥
ReseedingCoreÁģĠ;ÄÑCÄreseederÁÄ thresholdÁÄbytes_until_reseedÁ¥ ˣˠ;ËרStepRngÁÏÁϬØÒ×ØÔƒØØ×ØÙÖâStdRngÁÛ
ÛˆâÞƒâà×ââãâåÖò ThreadRngÁç°6òéƒòTHREAD_RNG_KEYÁë__rust_std_internal_init_fnÁì ë î ï__RUST_STD_INTERNAL_VALÁî ñã¿SliceChooseIterÁóË$ó¤ó¥óžó_phantomÁóindicesÁ¿úË$ú¤ú¥ú×IndexVecÁÿU32Á
ˆÿU64Áƒ
ƒˆ ƒ ˆ× IndexVecIterÁŠË$ŠŒ
ŒˆŠ³
ˆ
Ë$×IndexVecIntoIterÁ
ˆ³
ˆœƒž×





#
#
*
-
-
4
5
?
?
B
B
B
D
D
e
e
h
h
k
k
n
n
q
q





ˆ
ˆ








˜
˜
 
 
¦
¦
Ñ
Õ
Õ
Ø
Ø
Ø
Ú
Û
Û
Û



Š
­
­
°
°
°
½
½
Í
Í
Í
Ù
Ù
å
å
ç
ë
ù
ü
ý
ÿ




Œ
Ž
¤
¤
¤
¬
®
®
®
¯
±
²

¹
¼
¾
Á
Á
Ç
Ç
Ì
Ì
Ì
ù
ý



ˆ
ˆ
Š
Œ




˜
˜
¢
¢
µ
¹
º
»
»
¿
È
È
Í
Ï
Ï
Ó
ß
à
á
á
ê
ë
ì
ì
ÿ




ˆ



š

©
´

¹
¹
»
Í
Î
Ï
Ï
Ñ
Ñ
Ó
Ó
Ø
Ø
Ø
á
á
á
ç
ç
é
é
é
ó
ó
õ
õ
ù
þ
þ




Ž
Ÿ
 
¡
¥
«
«
³
µ
¹
º
½
Á
Ä
Ë
Ï
Ý
Ý
à
à
ã
ã
ç
ê
ø

œ
¢
¥
¥
¥
¨
¨
®
±
±
±
´
´

Â
Â
Â
Ð
Ð
Ð
Õ
Ø
Ø
Ø
ß
â
â
â
é
é
ì
ì
ï
ï
õ
õ
ø
ø
û
û
þ
þ






Š
Š










œ
œ
Ÿ
Ÿ
¢
¢
¥
¥
¨
¨
­
­
­
°
·
·
·
º
¿
¿
Ã
Ã
È
È
Î
Î
Õ
Õ
Ý
Ý
æ
æ
ð
ð
û
û




¢
¢
±
±
ã
ã
ã
ç
î
î
î
ñ
ù
þ
þ
þ
ƒ
ƒ




¦
¦
¨
¬
·
¼
¼
¼
Á
Á
Ä
Ï
Ï
Ñ
Õ
ã
ã
å
é
÷
÷
ù
ý




Ÿ
Ÿ
¡
¥
³
³
µ
¹
Ç
Ç
É
Í
Û
Û
Ý
á
ï
ï
ñ
õ
ƒ
ƒ






š
š
œ
¡
¤
¤
¤
§
§
©
¯
²
²
²
µ
µ
·
Ã
Ã
Ã
Ç
Ê
Ê
Ì
Ô
×
×
×
Ú
Ú
Ü
ã
è
è
è
í
í
ð
ò
ô
ö
ø
ú
ü
þ




ˆ
Š
Œ
Ž




˜
š
œ
ž
 
¨
¨
¨
«
°
°
³
³


¹
¹
¼
¼
¿
¿
Â
Â
Å
Å
È
È
Ë
Ë
Î
Î
Ñ
Ñ
Ô
Ô
×
×
Ú
Ú
å
å
å
è
ì
ì
î
ó
ö
ö
ö
ú
ú
ý
ý


ƒ
ƒ




Œ
Œ






˜
˜


ž
ž
¡
¡
¤
¤
§
§
ª
ª
­
­
°
°
³
³


¹
¹
Ã
Ã
Ã
Î
Î
Î
Ó
Ó
Ó
Õ
Ø
Ø
Ú
ß
á
á
á
ä
ä
æ
ê
þ
þ
þ








Ÿ
Ÿ
Ÿ
!AP©°¹»¿ÛÝ÷Åø³ÌæòìÛžžžSŸ¯S
~¸vg
Ø”©Š ”©¿c”©Ð씩µß”©”©Û©ª«TE,0ÅUʰØ…ªŠ …ª¿c…ªÐì…ªµß…ª…ª…ªÄc…ª¾…ª!”©! 8¥¿c··ÛT»Ø¼°6½UKÍ”
|‰Ô£¥ùM´«òP´«¿cÃÃÁUÈØÉôUÊU>jEf¡E•Ë÷«ƒ¬¤!¦¬÷¬ÛÑÑÒ³V ЊnÜqØ’­Š ’­¿c’­³’­ÛÛÛÜöV èBí¹6t(Øë­Š ë­¿cë­³ë­P!ï
ï
ð
Õ Õ-
Ho ¹Æ!’­!ë­P!Ì®!’­!ë­!Ì®!Ì®!Ì®!Ì®!Ì®!Ì®!Ì®!Ì®!Ì®!Ì®!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé!Ì®ô ô õ ¨÷ ˆÐ  mjçítoé¿cªª«ÿZ õÃ/<U{·êÛ¾µØ¾µŠ ¾µ³¾µ¿c´´µÂ[ ¡´$Qv™¡Û—¶Ø—¶Š —¶³—¶!Ì®AÌ®!¾µ!—¶A¾µA—¶!Ì®!Ì®!Ì®!̮ҷ!̮ҷç·!̮ҷç·ÿ·!̮ҷç·ÿ·š¸!̮ҷç·ÿ·š¸¸¸!̮ҷç·ÿ·š¸¸¸Ù¸˜!̮ҷç·ÿ·š¸¸¸Ù¸ý¸!Ì® Ò·ç·ÿ·š¸¸¸Ù¸ý¸¤¹š!Ì®
Ò·ç·ÿ·š¸¸¸Ù¸ý¸¤¹ι !Ì® Ò·ç·ÿ·š¸¸¸Ù¸ý¸¤¹ιû¹
œ!Ì® Ò·ç·ÿ·š¸¸¸Ù¸ý¸¤¹ιû¹«º !Ì®¥Ÿ!Ì®´­´­µ­WrappingÁ·­ˆ »-ˆ
óQ]ﺩ©©©©©»»¿°¹°¹¿cÚ Ú œeÝ žÆÞ ÂeÆß å$Æðƒ1œò<ß&Ë$§«ØݼŠ ݼ!ݼ Ë$§«¿cë ë ì ¦f R,%<d0Ûß½Øß½Š ß½Äcß½¾ß½AÚ Ú œeÝ žÆÞ ÂeÆß å$Æðƒ1œò<ß&8Øó ó Üfõ øfàö ƒgàß_¿~$êD©Š –¿¿c–¿Ðì–¿µß–¿–¿ÛÝó ó Üfõ øfàö ƒgàß_¿~$êDÛÝó ó Üfõ øfàö ƒgàß_¿~$êDذ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍпŠ «Á¿c«ÁÐì«Áµß«Á«Á«ÁÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛݰ
°
Âj²
øfß³
Âeß´
ìjïý$B‚4ÊÍÛ  ìwŽ øfï Âeï ìjï ˜xïlò¯ªw»}ؽɊ ½É¿c½ÉÐì½Éµß½É½É½ÉÛݽÉÛÛ  éxž üxÄOu’ŠÑØüÊŠ üÊ¿cüÊÐìüʵßüÊüÊüÊÝüÊAÝ Ý Þ „}à ˆß  ¸âÔs×"Ûª ª Îy« åy¬ ž
X$_¶@ʲ®Ø¾ÌŠ ¾Ì¿c¾ÌÐì¾Ìµß¾Ì¾Ì¾Ì¿c¸ ¹ ×zº äz» ðz¼ ýz½ ðz¾ “{¿  {À °{Á äzi|>–ž>Š ÇÍÛÇÍØÇÍÐìÇ͵ßÇÍÇÍÇÍÛ­Ö­ÖDurationÁ®Öäzâ}¯Öðzâ}Zµ–²ªÝ¾ÌÛÍ Î Ï ”|Ð Ñ «|– À)˜ØðÏŠ ðÏ¿cðÏÐìðϵßðÏðÏðÏÄcðϾðÏØÝ Ý Þ „}à ˆß  ¸âÔs×"пŠ ‹Ñ¿c‹ÑÐì‹Ñµß‹Ñ‹Ñ‹Ñ!‹Ñпð‹Ñ££¹ƒ£¹„£þ-'ºˆÉ¬gпð‹Ñ½£½£¾¿£¹À£þÁ£ exhaustedÁ1¥œMu7·Pп÷™/ºÓ÷ 8™/ÐÓ££¹ƒ£¹„£þ-'ºˆÉ¬gïºïº½£½£¾¿£¹À£þÁ£ŒÒ1¥œMu7·Pïºïº«£«£Ã­£þôÉûT™göУУÄÒ£þ…K~)+ÄÒž«£«£Ã­£þôÉûT™göУУÄÒ£þ…K~)+ÄÒž«£«£Ã­£þôÉûT™göУУÄÒ£þ…K~)+ÄÒž«£«£Ã­£þôÉûT™göУУÄÒ£þ…K~)+ÄÒž«£«£Ã­£þôÉûT™göУУÄÒ£þ…K~)+ÄÒž«£«£Ã­£þôÉûT™göУУÄÒ£þ…K~)+ÄÒž¿c¡
¡
ò€£
¤
ø3¥
±#ç¿àf0пØÅÚÐìÅÚµßÅÚÅÚ¿c§§¯2ª•1«ÖÍðÙûâZ±ç8©ØÀÛùMÀÛ!ÅÚÅÅÅÅÅÅÅÅÅÅÅÅÅÅ¿cÛ
Ü
Ý
Æ„Þ
ß
ß„à
á
ù„â
ã
™…f ÃjëZ¯Û»Ýػ݊ »ÝÐì»Ýµß»Ý»Ý»Ý¾»ÝÄc»ÝÛÌ®ØÌ®Š Ì®¿cÌ®³Ì®ø£






´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]

´­´­µ­•º·­ˆ »-ˆ
óQ]c»»¼ö‰¿ˆ¥ ‰Býži÷ޱߠ;|˜åؘå˜å¿cÄÄÄŠÇÑC¥ÈñŠ¥É¥Ê’‹¥Z.EÙ+p±ßÏåüåØüåüå¿cÏÏÉ‹ÐÁØÑ¬Øóp_=0êmØ€çÐì€çµß€ç€ç€ç|€çØÛÛÜ¡ŒÝˆâ =Ú„žÃ¿cþçÐìþçµßþçþçþç|þç¬þçþçØççõŒè°6ò
 ?ƒ¿cŠé³Šé|ŠéŠé³šÌ
ïºæÓIòøé¿cóóŽ÷ž¿øÇŽ¿ù׎¿såÍ&»r‡SË$¤ƒ¬ùMœêÃMœêØÿˆƒ³ˆÍý'›ùŽû¿c’ëÇL’ëµß’ë’ëé’ëªBªBö­BbufÁ÷<®B÷<9)
-ÜnLçEçEèEGlobalÁ ¿±‡§í#é’ëªBªBö­B ë÷<®B÷<9)
-ÜnLÍì¿cŠŒŽˆ³ˆµŠq· 8ÚòË$ùMŠŒŽˆ³ˆµŠq· 8Úò8ÃM¤îؘˆš³ˆ.˵`§Øy¿c…ïùM…ïÃM…ïíß××íNÙÖÚŒO€¶ßZ~ìàŸøïºøïµßøïøïøïìì ž¬©ÓÑÝÛ®ª¸´ï ë ’  Ÿ  ­ ª Å ¸ Ò Í æ
Û
ñ
ï
¡ž­©ÔÑÞÛ¯ª¹´ä Ú ð ë ÷ ó µ
°
    ® ª Æ ¸ Ó Í á Ý ©
¡
¯§ç
Û
ò
ï
¼»ÐÄÔÏÞÛéçÿœ£ž¯©ÖÑàÛ±ª»´è Ú ò ë ú ó ¸
°
 ¢  ° ª Ä ¸ Õ Í ä Ý é
Û
ô
ï
¤ž°©¾·ËÃ×ÑáÛ¬ª´à Ú í ë ü ó º
°
 £  ± ª Â ¸ Ö Í æ Ý ¦
¡
¬§ä
Û
õ
ï
À»ËÄÒÏàÛçúóˆÿŠž¦ž²©ÿ ó ½
°
˜  ¥  ³ ª È ¸ Ø Í é Ý ¬
¡
ê
Û
ÖÏâÛ§ž³©
ó ¿
°
 ¦  ´ ª É ¸ Ù Í ë Ý ®
¡
ë
Û
×ÏãÛªÿá×µ©Â
°
 ¨  ª Ë ¸ Û Í î Ý í
Û
ÙÏåÛäש×ë ÌÍ ËÛ
©Ùë ÎÍ ÊÛ
ž*
:Ãèï
ëÑîÛôï
÷ÑúÛdï
gï
jï
mï
pï
ýï
ï
ĕ
ï
ï
Ε
ï
ï
ï
˜ï
ï
žï
¡ï
¤ï
§ï
ï
ªŒ´ï
¾ï
Áï
Åï
Êï
Ðï
×ï
ßï
èï
òï
ýï
ï
ï
¤ ï
ϕ
¤ï
ÒÚ ×Ý ¿¡
/·²§ó³Š»6·ÙÑãÛ²ª¼´÷
ï
çåñï
ª´ÚÚ ¯Ý ³ ¹ ¼ ¿ à ½¾ÁÆ Ð Ï Ù 
œ
Å
Ù
í
  © ½ Ñ å ù øž²­Öˆ
ó ž
ó Ç
°
Û
°
ï
°
ƒ °
°
« °
¿ °
Ó °
ç °
û °
ú £ ´ª ïÝ óÝ úý
£Š½£ñ «£õ Уù «£ý У
«£
У
«£
У
«£
У
«£
У±
´
·
º
½
À
Ã
Æ
É
Ì
Ï
Ò
Õ
Ø
ù
 ü
 ÿ
  ˆ  Ž  š    £ ¦ © ¬ ¯ ² µ ¸ ž»ÞÏéÛçÀ»ñÛŠçÃÄÔÄíÛ½÷ úü ŠóºŠÃ¦ÿ¯ÿ±ÿÛ×Þ×ðôÛçØbŠ ½¿c~ÐìÙµßb pÄcT¾!3ùMÛòP"³P*A
©#»¿
°¹
Û
ÝMði÷ÅpøF|`¬³ÌæòÃMÇLéíߺì
ÈÒüÁ"Ô$AÈÒu64::MAXÁœäí?#/@? M?o.y?  öÌÞÞ@*üË-Ø Cÿߨ3 0ÿß.Ø`œô  #BCüÞ*ƒîí÷ň><''‡'3 0.`d'Œ'
 #
B 'üï& Šü&ïň÷ň<ü½'e  >6C èß ¡(ü˜'Ø‹,µ'ª‹ª‹7eb"ABCDEFGHIJKLMNOPQRSTUVWXYZ\
abcdefghijklmnopqrstuvwxyz\
0123456789"Á<Š-Š--' *(NÔø,…-. V×XVÖû!@*: <@YY@øV¾$ $õ!Ó«±:Ø0xD800Áìæ  à¤ï  + .à, VüÆ > ¡à ň-} ˆ 0.0Á0.0Á»`

½`
šì `
º`
øò€bø
Áb

Áb

š+òËb
EMò÷s
øó
øô€bø
Áb

Áb
…•)ôËb
CKô÷s
øõ
øö€bø
Áb

Áb
…•)öËb
CKö÷s
ø÷
 øø€bø

Áb
 
Áb
…• )
øËb
 C
Kø÷s

i qւu
 ìôõÇu
oxóÇu
øñ
üžv:
œ §v
'#ØÔЃ62.}øú€bø
Áb

Áb
…•)úËb
CKú÷s
øû
øü€bø
Áb

Áb
…•)üËb
CKü÷s
øý
øþ€bø
Áb

Áb
…•)þËb
CKþ÷s
øÿ
 ø€€bø

P€Áb
 
@€Áb
…• )Ëb
 C
K÷s

ø
 ø‚€bø

PÁb

@Áb
…•) Ëb
C
K÷s

i qÇu
 ì ôÿÇu
 oxýÇu
ôýûÇu
øù
üªw>
³w
ª¦]YU »·³jfb 32Á  ü @5 86@jüÌ 3ýï £/ù™·e
é™·e
¾òHòHÆõHµ Ñ,öHUÑ,÷H¤Ñ,+átLaû§î0î0
UnsafeCellÁð0»Ì-·}—KEüC£»»¼ö‰¿ˆ¥ ‰Býži÷ŽÉÉ ChaCha12CoreÁʺ!Í%)<¤ŽXÖÖ×OsRngÁ q#ymØóÍìù™ÕúeîÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ’¢ ’¢¼¤µûù˜faë®®£°ÑC¨it§ÅLS¶’¢á˜¢fa[#¼¤ù™ðe
é™ðe
Ð’¢28ù™¦®e
 ïÁ¤Õ¥2¼¤¿eù™íÔeù™‚!­e
 ñÓ§%¼¤!eRÀ$eù™Ûôe!$ïÓ§óñÓ§¨W ¨ Å É  #BCüÕÔ üù"  <“

/
6„ù
ÈÑ C
5Y š
 k   ô  Û ¸


 
 Ö  #BüœJ  å ¨Q
Y ß.? V àœÔ æ<„€   žùÿ ®¯¬üèÇü–ü³ü]üÈWL‚ ÷>11ň'×qÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¹±œňüì³


ň&£˜¸üproductÁEcurrentÁC»C üˆ
 
¬ Ö3üµ$­ý¯&
Œ³?T¹? ¹?A$¿?4B9 ´?ÍÌÌ? Ã?”Æ?TÍ? $Í?ŒBÔ?A9 $Ç? A ×?ü²?'  Ø?ü™?AƵl¢?µ((µÙØT\ŒC ,ŒC¥C”CA¤„C ,…C‡C —CüðB)ɵDùB-üæA$
Ý пÞ *‹Ñ6пÜELüø  »±ßÏå!¼.˜å:ÅÅBlockRngÁÇresultsÁÈÖÉíY ã÷hOwü匠 ÛÜ%þç1ÒÒ ChaCha12RngÁÓ°6†m¯G{›Òmt ÿ%’ë1ì9@
 ÿ%’ë1„í9@# Š'ŠŒŽˆ³ˆµŠq· 8Úò{ÄlÄlÛTÇlµ ™lÈl
end_or_lenÁ™lÉl_markerÁ™lŒœjSžÛâÜ# Š'Ô¼3ÄlÄlÛTÇlµ ™lÈlü™lÉlÙ¼™lŒœjSžƒ* %…ï1ˆ?ˆ?L? ë÷<Œ?U÷<?capÁ÷<Ž?¤÷<?µ ÷<?þ÷<µqS·Í쪱Û* š%…ï1ˆ?ˆ?L? ë÷<Œ?U÷<?¿÷<Ž?¤÷<?µ ÷<?þ÷<µqS·Í쨯 Ý뤎Œšœí¤ÀÄ CryptoRngÁLëRngCoreÁ<ö| SeedableRngÁ\ÿ¬ TryCryptoRngÁdŒ
TryRngCoreÁTšˆ °6Í  9$ÓŽ÷6Ùø²d’!ÒÕï
Õð
ü˜ÔCü˜*' Utilities for random number generationÁÃúüÇJG Rand provides utilities to generate random numbers, to convert them toÁü’KH useful types and distributions, and some randomness-related algorithms.ÁÞúŒâ # Quick StartÁôú ```Áü€DA // The prelude import enables methods we use below, specificallyÁüÅPM // Rng::random, Rng::sample, SliceRandom::shuffle and IndexedRandom::choose.ÁÌ– use rand::prelude::*;Á°ú”´ // Get an RNG:ÁôÇ let mut rng = rand::rng();ÁæúüêFC // Try printing a random unicode code point (probably a bad idea)!Áü±1. println!("char: '{}'", rng.random::<char>());Áüã85 // Try printing a random alphanumeric value instead!ÁüœKH println!("alpha: '{}'", rng.sample(rand::distr::Alphanumeric) as char);Áèúüì'$ // Generate and shuffle a sequence:Áü” 0- let mut nums: Vec<i32> = (1..100).collect();ÁÜÅ  nums.shuffle(&mut rng);Áüá FC // And take a random pick (yes, we didn't need to shuffle first!):Áü¨
" let _ = nums.choose(&mut rng);Á
¨ÆÓ
út×
 # The BookÁæ
úüê
=: For the user guide and further documentation, please readÁü¨ =: [The Rust Rand Book](https://rust-random.github.io/book).Á%https://www.rust-lang.org/favicon.icoÁ„Ä 9https://www.rust-lang.org/logos/rust-logo-128x128-blk.pngÁló #https://rust-random.github.io/rand/Ál„
¼ Ý뤎Œšœíg¤hÀgÄf„Â]žÂV|µÂK¬ ÑÂ?
îÂ5ˆ °64  93Ž÷62ø²1!ÒÕ0ï
ÕCð
knq”Éh„õ]NQ?B-0ìïü˜<9 Generating random samples from probability distributionsÁÕúüÙLI This module is the home of the [`Distribution`] trait and several of itsÁü¦FC implementations. It is the workhorse behind some of the convenientÁüíJG functionality of the [`Rng`] trait, e.g. [`Rng::random`] and of courseÁ¤¸ [`Rng::sample`].ÁÍúüÑIF Abstractly, a [probability distribution] describes the probability ofÁü›1. occurrence of each value in its sample space.ÁÍúüÑNK More concretely, an implementation of `Distribution<T>` for type `X` is anÁü IF algorithm for choosing values from the sample space (a subset of `T`)ÁüêMJ according to the distribution `X` represents, using an external source ofÁü¸:7 randomness (an RNG supplied to the `sample` function).Áóúü÷FC A type `X` may implement `Distribution<T>` for multiple types `T`.Áü¾ IF Any type implementing [`Distribution`] is stateless (i.e. immutable),Áüˆ
NK but it may have internal parameters set at construction time (for example,Áü×
PM [`Uniform`] allows specification of its sample space as a range within `T`).Á¨ ú¬ úü° '$ # The Standard Uniform distributionÁØ úüÜ MJ The [`StandardUniform`] distribution is important to mention. This is theÁüª LI distribution used by [`Rng::random`] and represents the "default" way toÁü÷ MJ produce a random value for many different types, including most primitiveÁüÅ
LI types, tuples, arrays, and a few derived types. See the documentation ofÁü’)& [`StandardUniform`] for more details.Á¼úüÀXU Implementing [`Distribution<T>`] for [`StandardUniform`] for user types `T` makes itÁü™MJ possible to generate type `T` with [`Rng::random`], and by extension alsoÁüç! with the [`random`] function.Áúü+( ## Other standard uniform distributionsÁ¹úü½JG [`Alphanumeric`] is a simple distribution to sample random letters andÁüˆTQ numbers of the `char` type; in contrast [`StandardUniform`] may sample any validÁ `char`.Áéúüí\Y There's also an [`Alphabetic`] distribution which acts similarly to [`Alphanumeric`] butÁÜÊ doesn't include digits.ÁæúüêNK For floats (`f32`, `f64`), [`StandardUniform`] samples from `[0, 1)`. AlsoÁü¹HE provided are [`Open01`] (samples from `(0, 1)`) and [`OpenClosed01`]Áü‚NK (samples from `(0, 1]`). No option is provided to sample from `[0, 1]`; itÁüÑNK is suggested to use one of the above half-open ranges since the failure toÁü KH sample a value which would have a low chance of being sampled anyway isÁüì  rarely an issue in practice.Áúü‘)& # Parameterized Uniform distributionsÁ»úü¿KH The [`Uniform`] distribution provides uniform sampling over a specifiedÁü‹HE range on a subset of the types supported by the above distributions.ÁÔúüØ52 Implementations support single-value-sampling viaÁüŽ41 [`Rng::random_range(Range)`](Rng::random_range).ÁüÃNK Where a fixed (non-`const`) range will be sampled many times, it is likelyÁü’;8 faster to pre-construct a [`Distribution`] object usingÁüÎB? [`Uniform::new`], [`Uniform::new_inclusive`] or `From<Range>`.ÁúÔ• # Non-uniform samplingÁ°úü´MJ Sampling a simple true/false outcome with a given probability has a name:Áü‚JG the [`Bernoulli`] distribution (this is used by [`Rng::random_bool`]).ÁÍúüÑIF For weighted sampling of discrete values see the [`weighted`] module.ÁúüŸJG This crate no longer includes other non-uniform distributions; insteadÁüêGD it is recommended that you use either [`rand_distr`] or [`statrs`].Á²úúüºVS [probability distribution]: https://en.wikipedia.org/wiki/Probability_distributionÁü‘74 [`rand_distr`]: https://crates.io/crates/rand_distrÁüÉ/, [`statrs`]: https://crates.io/crates/statrsÁìú [`random`]: crate::randomÁü˜7ãòüÐ/¤ó
FTu¨ÄÆßï
ð
žSLœ"žÎëSt§"©Ïïdî"Aвd™#!ÒÛT$§#·ÓÁU­#ÃÔöV4É#ÛÖöVÜÖ³VdÑ#Ñ׳VÒ×Â[Tö#´ÙÂ[µÙÿZd‚$ªÚÿZ«Ú„}<·$Ý Û÷6Ý$ø Ül L…  ž©²!
Ò÷6¿ø
×Π`
Ô˜AT¸1LÈ ´Á
„Ë
ü©$…ªÅcüÔ8× ¡¢  …ª ¡ c cˆ¢cµ
 `£c ë `àB¤GS
¢Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈÓ. éBL Û
± âü¿)»À¼§…ª”©ü‚7ü‚JG Construct a new `Bernoulli` with the given probability of success `p`.ÁÑú # PrecisionÁíúüõHE For `p = 1.0`, the resulting distribution will always generate true.ÁüÂIF For `p = 0.0`, the resulting distribution will always generate false.Áúü˜LI This method is accurate for any input `p` in the range `[0, 1]` which isÁüéB? a multiple of 2<sup>-64</sup>. (Note that not all multiples ofÁü°?< 2<sup>-64</sup> in `[0, 1]` can be represented as a `f64`.)ÁÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
”©…ª
» üø%Xüá!B? Construct a new `Bernoulli` with the probability of success ofÁü¨"DA `numerator`-in-`denominator`. I.e. `new_ratio(2, 3)` will returnÁüñ"JG a `Bernoulli` with a 2-in-3 chance, or about 67%, of returning `true`.ÁÀ#úüÈ#EB return `true`. If `numerator == 0` it will always return `false`.Áü’$IF For `numerator > denominator` and `denominator == 0`, this returns anÁüà$HE error. Otherwise, for `numerator == denominator`, samples are alwaysÁü­%85 true; for `numerator == 0` samples are always false.ÁTÿ% €
 numeratorÁLŠ& denominatorÁ\š&´Ý*üÊ)63 Returns the probability (`p`) of the distribution.Á…*úü*KH This value may differ slightly from the input due to loss of precision.Á ä*£ £”© æ*
$ç*üù+%”©#ü³,64¶,¤¥ ¤”© ¥±ß£ Î,Îì±ß ½,ø±ßÀ,
±ß$Ï,°6Õ,+- d”  !A·Ã÷6ÊøßúHùŒ5>¬í-Tˆ Ì ü•NK Types (distributions) that can be used to create a random instance of `T`.ÁäúüèA> It is possible to sample from a distribution through both theÁüªGD `Distribution` and [`Rng`] traits, via `distr.sample(&mut rng)` andÁüòOL `rng.sample(distr)`. They also both offer the [`sample_iter`] method, whichÁüÂ<9 produces an iterator that samples from the distribution.ÁÿúüƒNK All implementations are expected to be immutable; this has the significantÁüÒDA advantage of not needing to consider thread safety, and for mostÁü—IF distributions efficient state-less sampling algorithms are available.ÁáúüåKH Implementations are typically expected to be portable with reproducibleÁü± :7 results when used with a PRNG with fixed seed; see theÁüì NK [portability chapter](https://rust-random.github.io/book/portability.html)Áü»
NK of The Rust Rand Book. In some cases this does not apply, e.g. the `usize`ÁüŠ C@ type requires different sampling on 32-bit and 64-bit machines.ÁÎ úüÒ .+ [`sample_iter`]: Distribution::sample_iterÁd !¥"!"Îìü ÂÍì§« ˜ !ë“*ë“0#%'#%'#'%24üò 4ü¡ LI Generate a random value of `T`, using `rng` as the source of randomness.Á4õ ¦§ ¦ó“ §£§«!£$$
!Îìâ• ü øâ•ÿ 
#ó“§«â•
°6
35üöbü¬
JG Create an iterator that generates random values of `T`, using `rng` asÁìû
 the source of randomness.Áúü¥C@ Note that this function takes `self` by value. This works sinceÁüíDA `Distribution<T>` is impl'd for `&D` where `D: Distribution<T>`,Áü¶IF however borrowing is not automatic hence `distr.sample_iter(...)` mayÁü„EB need to be replaced with `(&distr).sample_iter(...)` to borrow orÁüÎC@ `(&*distr).sample_iter(...)` to reborrow an existing reference.Áú
# ExampleÁ°ú¨ÆüÄLI use rand::distr::{Distribution, Alphanumeric, Uniform, StandardUniform};Áúô©ÈÀú¼È // Vec of 16 x f32:ÁüäOL let v: Vec<f32> = StandardUniform.sample_iter(&mut rng).take(16).collect();Á¸ú // String:ÁüÓ  let s: String = AlphanumericÁôø .sample_iter(&mut rng)Á„›
.take(7)Áİ .map(char::from)ÁœÍ .collect();Áåú¤í // Dice-rolling:Áü†:7 let die_range = Uniform::new_inclusive(1, 6).unwrap();ÁüÅ74 let mut roll_die = die_range.sample_iter(&mut rng);Áü)& while roll_die.next().unwrap() != 6 {Áü¯,) println!("Not a 6; rolling again!");Á¨Æó“â•··ÛT»Ø¼°6½UKÍ”
|‰Ôó“â•§«!£&&!Íìâ• ¿Íìó“
%ó“§«â•$ˆ°6Ž<>üÛgüÝ" Map sampled values to type `S`Áúƒšžú¨Æü²-* use rand::distr::{Distribution, Uniform};Áäúüì41 let die = Uniform::new_inclusive(1, 6).unwrap();Áü¥2/ let even_number = die.map(|num| num % 2 == 0);ÁüÜ1. while !even_number.sample(&mut rand::rng()) {Áü’.+ println!("Still odd; rolling again!");Á‡ ¨ÆÞó“ÃÃÁUÈØÉôUÊU>jEf¡E•Ëó“ɦ§«÷¬!(¤)()!Íìɦ âÍì÷¬ å"ɦ§«ɦ÷§˜"÷¬ «¿¢
'ó“§«ɦ÷¬ôU$îmoiküÅ;8¨¥+,,+¨ÿ“ ÊÎì « Í! «§«›«-#-4602ü‡3©ª ©›« ª£§«*£.. ¢*Î짪 ø§ª
-8§« «§ª°6©8:ü"R0£1¥2120Íì÷« ¢"Íìý« ¥"Í샬 ¨"!÷«ƒ¬|Ó"øý«ë"´«345úMûMÿM54egac]_Lö"$û"//ƒ¬ü #$£#« «´«Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙƒ¬/ ¨#/
4÷«ý«ƒ¬$­#üò%-Lõ%¬ ¬´«Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ/ ÿ%/
5÷«ý«ƒ¬$€&üÆ&]7£8¥9879Ù« Ë&ê« Î&û« Ñ&Œ¬|‡'Ÿ¬Ÿ'´«(*-/24üÐ)e;<¥=¤>=><;í¬ƒ¬˜"÷¬ ³*Íìí¬ Ø)û« Û)Û§ Þ)Œ¬|’*"í¬­±Tª*Ù« Õ)¦¬?#?QSVX[]ü¼*34¿*­® ­¦¬ ®£÷¬:£@@ ×*:Î솳 Æ*ø†³É*
?÷«í¬ƒ¬÷¬†³$Ø*°6Þ*;=´­,ü§+! Sample or extend a [`String`]ÁÉ+úüÍ+EB Helper methods to extend a [`String`] or sample a new [`String`].Á»¤Œ™,Ì“,d·,AAë“ü­,†Aë“ë“BDBDDBü­.WüÊ,)& Append `len` random chars to `string`Áø,úü€-JG Note: implementations may leave `string` with excess capacity. If thisÁüÏ-IF is undesirable, consider calling [`String::shrink_to_fit`] after thisÁ\. method.Ál°.¯°± ¯ó“ °ý« ±úHúHßûHÁ‘4Ý­f‰úM÷A£CC Ï.AÎìý« ¾.Ÿ¬Á.
Bó“ý«$Ð.°6Ö.stringÁ4ã.ø.=?üƒ1KüŠ//, Generate a [`String`] of `len` random charsÁ¾/úüÆ/LI Note: implementations may leave the string with excess capacity. If this
float_sizeÁT·! Â!8íÄ!'Ç!8š<É!'Ð! Ò!, Ó!8‰ÄDÔ! Ü! Ý! Þ!8à!, ã!8¼ÄDä!
í!7 ï!% ð!8"8 precisionÁL†" ", "8ïÄl“" ¡"7 £"% ¤"8¶"8ƒg,º" À"71.0ÁÂ" Æ" È" ó" É" å"7 Ê"8Ì", Ï"8¼ÄDÐ"Ù"8åÏLÜ"8ç", ê"8‰ÄDë"% ô"8‡#8»,#& #, #8ÛÓ# —#8°6™# œ#874# £# ¤#% ¥#8·#8»,»# Á#8»,Ã#É#, Ì#8ÛÃÍ#'Ð#8˜#,Ò# ×# î#8¶ÎTØ# ã#8åÏLå#% ï#, $8´$'„$8˜#,†$ $ $8ƒg,Œ$
“$, •$8´$'˜$8ð"lš$ §$ ­$8»,¨$, Ð$ Ñ$ ß$+ Ò$ Ó$ Þ$8âÔ$ ×$ Ý$, Ø$8û$Ù$- à$8$ê$8²dï$ û$, ü$8´ý$ ÿ$8
%8³Vd…% % §+8  %8Ô4£% ©%8£ ª%& «%8÷6­% ±%- ³%8Ø,´% ¹% º% Í% »%8$¼%$ À%8°6Â%& Å% Ç%8È%8£ Ì%(Ï%, Ò%8´Ó% Ö% +B8´'8¶ÎT¸' Ã'8íÅ''È'8š<Ê''Ñ' Ó', Ô'8‰ÄDÕ' Ý' Þ' ß'8á', ä'8¼ÄDå'
î'7 ð'% ñ'8ƒ(8åÏL‡( ‘(, “(8ïÄl”( ¢(7 ¤(% ¥(8·(8ƒg,»( Á(7ÊÐÃ( Ç( É( ô( Ê( æ(7 Ë(8Í(, Ð(8¼ÄDÑ(Ú(8åÏLÝ(8è(, ë(8‰ÄDì(% õ(8ˆ)8»,Œ)& ), “)8ÛÔ) ˜)8°6š) )874ž) ¤) ¥)% ¦)8¸)8»,¼) Â)8»,Ä)Ê), Í)8ÛÃÎ)'Ñ)8˜#,Ó) Ø) ï)8¶ÎTÙ) ä)8åÏLæ)% ð), Ò*8´Ó*'Õ*8˜#,×* Ü* â*8ƒg,Ý*
ä*, æ*8´ç*'é*8ð"lë* ø* +8»,ù* ÿ*, +8ÛÃ+'…+8˜#,‡+ Œ+ Ž+7 +, ²+ ³+ Á++ ´+ µ+ À+8â¶+ ¹+ ¿+, º+8û$»+- Â+8$Ì+8²dÑ+ Ý+, Þ+8´ß+ á+8
ã+8öV4ç+ î+ Ë08 ü+8Ô4ÿ+ …,8£ †,& ‡,8÷6‰, ,- ,8Ø,, •, , ©, —,8$˜,$ œ,8°6ž,& ¡, £,8¤,8£ ¨,(«,, ®,8´¯, ², Á028.8¶ÎT•.  .8í¢.'¥.8š<§.'®. °., ±.8‰ÄD². º. ». ¼.8¾., Á.8¼ÄDÂ.
Ë.7 Í.% Î.8á.8»,å.& ê., ì.8ÛÃí. ñ.8°6ó. ö.874÷. ý. þ.% ÿ.8/8fractionÁD•/ ž/8», /¦/, ©/8Ûê/'­/8˜#,¯/ ´/ Ð/8¶ÎTµ/ À/, Â/8ïÄlÃ/% Ñ/8«ãDã/ ë/8ÿÄì/ „0 †07ˆ …0 ˆ0, Š08´0'08˜#,0 ”0 ³07ÊЕ0 ™0, 08‰ÄDœ0'¤08EPSILONÁ<¦0 ®072.0Á°0\­  ²!TVÒÕ|×ï
TWÕð
TW÷6ôøTX NonZeroI128Á\Ö°˜TZ
NonZeroI16ÁTãš—T[
NonZeroI32ÁTïÌ—T\
NonZeroI64ÁTûþ—T] NonZeroI8ÁL‡è–T^ NonZeroU128Á\ü•T_
NonZeroU16ÁTŸÚ”T`
NonZeroU32ÁT¯Ta
NonZeroU64ÁT»Æ•Tb NonZeroU8ÁLǤ”TcdºƒpsT9<!$  ñóØÚ½¿£¥oqVXüŠ)Ì®e#eüÈ4´µ ´Ì® µ±ßd£ff ãd Ò ‰Õ
e±ß°6ê#%ü¥ *Ì®h#hüä 5· Ì® ·±ßg£ii ÿ g î  ‰ñ 
h±ß$€
°6
#%üÃ
*Ì®k#kü‚ 54… ¸¹ ¸Ì® ¹±ßj£ll j Œ  ‰ 
k±ß °6¤ #%üÚ *Ì®n#nü™ 5 º» ºÌ® »±ßm£oo ´ m £  ‰¦ 
n±ß °6» #%üñ +Ì®q#qü±
64´
¼½ ¼Ì® ½±ßp£rr Ì
p »
 ‰¾

q±ß
°6Ó
#%ü¦”³ Æ ½ Ì Ü , Í8´Î& Ð8´Ñ$ Ó, Õ8ÛÃÖ& Ù8´Ú*Þ á º 88² ü, ý8´þ 8
8Õ|†  ´+ ¤ ¥ ¬8Ý8 º8Ô Ã8£ Ä& Å8÷6Ç Ë- Í8Ø Ó Ô ç Õ8$ Ú8°6Ü& ß á8â8£ æ(é, ì8´í ð ª 8°6 874†'Œ Ž, 8Ûà   8, š8´% »¼æ þ Ñ   , 8´& ˆ8´$ , 8æ Ž& 8õ
$’*˜  Î 88² , ·8´¸ º8
¼8Õ Ð È8 Þ8Ô ç8£ è& é8÷6ë ï- ñ8Ø ÷ ø  ù8$ þ8°6& ƒ 88£ Š(, 8´  ¾8 « ° 8Á8Ä8Û Ì Ï8nzÁÍ Ñ, Ó8æ Ô × ä8°6Ø Û8‚7 â ã æ ž8,€8‹ù% ˆ% Ï ´µª«ßúHuvǸ&uwÿ$­1ux•º´­uy•ºµ­uyïAuzв!u|ÒÕ|ˆï
u}Õð
u}„}<™Ý u~Û÷6®øu¬Ûä\ö×T‡Êœ—¼ÔË™dëwyUWT§FüÆ+Ì®#ü†64‰¾¿ ¾Ì® ¿±ß£ ¡  ‰
±ß°6¨$&œÞuü§"%»¤Œ“"Ì"Ì®BüÓ"QlÖ"ÀÁ ÀÌ® Á±ß »¸£ õ" ä" ‰ç"
±ß$ö"°6ü"¾ ‰#™#46üƒ&&¾µˆ#ˆü°&44³&ÃÄ Ã¾µ ıߣ Ë& º& ‰½&
ˆ±ß$Ì&°6Ò&$&„ï&,õ&uü˜'"¬ž'u èßüŽ,$—¶#ü¹,44¼,ÅÆ Å—¶ Ʊߌ£ŽŽ Ô,Œ Ã, ‰Æ,
±ß$Õ,°6Û,$&|ø,,þ,uüÎ."»¤Œº.Ì´.¾µBü÷.Vlú.ÇÈÉ Ç¾µ È±ß É»¸£ ™/ ˆ/ ‰‹/
±ß$š/°6 /ø4­/Â/57Ù1<closure_kind>Á<closure_signature>Á<upvars>Á±ß üÄ2 »¤Œ°2̪2—¶Büë2Vlî2ÊËÌ Ê—¶ Ë±ß Ì»¸£ 3 ü2 ‰ÿ2
±ß$Ž3°6”3ø4¡3¶357ü¥6+Ì®˜#˜üå664è6ÍÎ ÍÌ® αߣ €7 ï6 ‰ò6
˜±ß$7°6‡7$&¼GTG ¨G ÔL ®G ¿G, ¯G °G ½G, ±G8tyvarÁ,²G& ·G8¼,¸G
¾G*ÁG ÄG ÒL8$ÎG ÒG, ÔG ÕG ÝG, ÖG8¶Š,×G$ ÜG
ÞG àG8²dâG îG ïG ûG, ðG ñG ùG, òG8¶Š,óG$ øG
úG üG8
þG8Õ|H8$,šH,  H ¡H àH8Õ|¯H& ¾H8²dÀH ÌH, ÎH8¶Š,ÏH ÕH$ ÖH
áH ëH ÌL+ ùH úH I8Ý4ûH8 I8Ô4I ˜I8£ ™I& šI8÷6œI  I- ¢I8Ø,£I ¨I ©I ¼I ªI8$«I$ ¯I8°6±I& ´I ¶I8·I8£ »I(¾I ÁI ÏI, ÃI ÄI ÌI, ÅI8¶Š,ÆI$ ËI
ÍI ÑI ÂL 8ãI8º
çI ëI íI µK, îI ïI ³K
8°6K ŽK874K'•K —K, ˜K8¶Š,™K žK ŸK  K$ ²K
´K% ¶K8L8_rngÁ$•L šL8°6œL% ŸL8º
²LÄÈM\ÕM áM þO  çM øM, èM éM öM, êM8¶Š,ëM& ðM8¼,ñM
÷M*úM ýM ™N8Š \þM ‰N ŠN ˜N N ŒN, ŽN N N, N8¶Š,N
—N% šN ¡N ÑN ¢N ´N, £N ¤N ²N, ¥N8prefixÁ4¦N& ¬N8¼,­N
³N, ¶N8headÁ$·N& »N8¼,¼N, ÂN ÃN ÏN, ÄN8tailÁ$ÅN& ÉN8¼,ÊN
ÐN*ÓN ÖN ±O8ùTàN êN ëN ÷N, ìN íN õN, îN8´“4ïN
öN8Š \O ŒO O «O ŽO  O, O O ˜O, O8´“4O
™O, O8å“$œO, ¢O £O ©O, ¤O8¡”$¥O
ªO% ²O ºO ÎO »O ÍO, ¼O ½O ËO, ¾O8´“4¿O& ÅO8¼,ÆO
ÌO*ÐO ÓO úO8ùTÝO çO èO ôO, éO êO òO, ëO8´“4ìO
óO% ûOü©Pl¥ŸžžÍìïº ®PŸt±P!Ì®ïº|…QÌ® # 352 ·PüªQ84­QÏÐ ÏÌ® Ðâ•£¡¡ ÅQœŒ– ´Q·Q
 ïºŸâ•$ÆQ°6ÌQ.0üQ Î…£ç…£…†££ £ïºŸâ•ïº â•ü—Ra¥¥¥¸™ œR×™|èRÌ®¦#¦üS=4SÑÒ ÑÌ® Òý«„»¤£§§ ¨S¤޹ —SŸ¬šS
¦ïºý«$©S°6¯S(* ©°¹»¿üœ-„­©!ª©ªë“üœnÍì!©ë“,듬«¬Íìó“úž«ªŸ¬Q¾ó“©©üâ&ó“úž²Ÿ©©
¬ó“úžÃ ð´ŒL™ £ ´ © Ç, ª8´«& ­8´®$ °, ²8wideÁ& ·8´¸$ º, ¼8shiftÁ& Â8*É Ì ú88ø „Û8
ì, ð8´ñ ô ô8!$‚8°4‡ Ž  , 8´$ , 8´% š+ © ª ¹8Ý ± ¸8±8 Ç8£! Î Û8$ Ó8à Õ& Ö, Ø8´Ù(Ý8'ä8° í ê8ÿ8tmpÁƒ   88, 8© $“
  ¦8à œ8ž, ¡8© % § ¹ Ü  º È8¿, Â8Ø 8Ê, Í8´Î$ Ð8ï£Ò8Ö, Ù8´Ú% û ¢ Ê, £ ¤ » ¥ ¹ , ¦8´§& ©8¼$ ¯, ±8© & 8´·$ º ¼$ ½, ¿8Ø & Å8*Ì Ï ±, Ù Ú ª88ø „í8
þ, 8´ƒ    8!$˜ 8°4  ¤  ¦  ¯ , § 8´¨ $ ª , ¬ 8´­ % ° + Ã  Ä  Ó 8Ý Ë  Ò 8±8 å 8£! ì  ù 8$ ñ 8Ã ó & ô , ö 8´÷ (û 8'
8°4„

 48 8Ä & , 8©   8$  8castÁ$  š  % œ 8² 8à & · , ¹ 8©   ¿ 8à Á   8‹«  Ç  È % É 8ß 8ï£ã  ç 8Ä é 
ë 8Ã í % î 8
8hiÁˆ
& Š
, Œ
8´


 ­
8ï£

8SimdÁ
'ž
8˜#, 
 ¥
 ¬
, ¦
8Ø 
 ®
8‹«
 ³
 ´
% µ
8Ë
8loÁÏ
& Ñ
, Ó
8´Ô
 ×
8ï£Ù
 Ü
8‹«
 á
 â
% ã
 ù
 8á¬ú
$ ü
8 ®þ
 «% ²äÐ í à! ó  , ô8´õ& ÷8´ø$ ú, ü8halfÁ& 8$*ˆ  ù8$•8ø „š8
«, ¯8´° ³ ó8!8° Í Ï Ø, Ð8´Ñ$ Ó, Õ8´Ö% Ù+ è é ø8Ý ð ÷8±8 8£!$‰  š8$ 8­ & , 8´˜(œ8'£8° ¬ éa88ác& Î, Ð8´Ñ Ô Ö7ˆ ×Ù, Ü8°% á8ó8÷8øfû ÿ  8$‚ 8ácT‰ 8èd• ¡ °8­ ¢ ¤8ác% ±8Ã8Ç8¿ Ë Í8øfÏÓ, Ö8°% Û8øfíñ8ác% þ8¿   £8$–, ž8° ¤8è ± À8­ ² ´8ác% Á8øfÓ× Ú é8¿ Û Ý8ácë, î8°% ó888highÁ$ 8¿ , 8°% ž8¿ ° ²8øf´¸, »8°% À8øfÒÖ8ác% ã8¿ õ÷ ú 8­ ûý, 8°$ 8èd‡  ¥8$” 8ácT›% ¦8øf¸¼ ¿ Î8¿ À Â8ácÐ, Ó8°% Ø8¸ï8¿ òô, ÷8°% ü8¸  ¤8$—œ, Ÿ8° ¥8è ² ½8­ ³µ, ¸8°% ¾ Ñ Û8¸$ Ö8øfØ% ú ¡ Æ
 ¢ ®, £ ¤ ¬, ¥8´¦& ¨8´©$ « ­, °8scalarÁ& ·8´¸$ º, ¼8°& Á8*È Ë Ý!, Õ Ö Ö!88ø „é8
ú, þ8´ÿ  Ì!8!$”8°4™   ¢ «, £8´¤$ ¦, ¨8´©% ¬+ ¿ À Ï8Ý Ç Î8±8 á8£! è õ8$ í8­ ï& ð, ò8´ó(÷8'þ8°4€  ¾!a8Ò8
lower_maskÁ á ã, ä8´å ç'è8˜# ï û ð7ˆ ñó, ö8°% ü88°$–  , ž8´Ÿ ¡'¢8˜# © ¯, ª8°% °8Æ8Ê8øfÎ Ò Ô æ8 Ú8ÇÁ
è ê ù8­ ë í8ÇÁ% ú888¿ ˜ š8øfœ 8°% §8øf½Á8ÇÁ% Î8¿ äæ é ö8ï8°
ø ú 8­ û ý8ÇÁTÿ% Š8øf ¤ § 8¿ ¨ ª8ÇÁ¸8°% ¿8Õ8Ù8¸ â8¿ äæ8°% í8¿ ƒ 8øf8°% 8øf¨¬8ÇÁ% ¹8¿ ÏÑ Ô Þ8­ Õ×8°
à â ô8 è8ÇÁ% õ8øf   ¡ 8¿  8ÇÁT— £ 8°% ª 8¸Å 8¿ È Ê 8°% Ñ 8¸ì  ï  ü 8õ 8°
þ  €! Š!8­ !ƒ!8°$†!% ! ¢! ¬!8¸$£!$ §!8øf©! ×!% Þ!ä"|Ž" ž" è$ ¤" «", ¥"8´¦"& ¨"8´©"*­" °" å$8$º"8ø „¿"8
Ð"8¬,Ô" Ú" ß$8!$è"8°4í" ô" ö" ƒ#8¬,÷"$ ü"8¬,þ"% „#+ “# ”# £#8Ý4•# # ¢#8±4œ#8 ±#8£!$´# ¸# Ç#8$¹#$ ½#8à ¿#& À#8¬,Â#(É#8$Ì#'Ð#8°4Ò# Ù# Õ$ 8ë# ï# ù#8¸$ð#$ ô#8øfö# û# ý# ‰$8$þ#8ƒ$, †$8´‡$ Š$8£!$$ $ ˜$8à $8$, •$8´$% ™$ «$ Ç$8¸$¬$8±$8¬,´$$ ¹$8øf»$8¿$8¬,Â$% æ$üº5tË5°°ë“üº5°ë“ë“ ±²³´µ·¸±²³´µ·¸Íìó“´TÔ9ƒÓÍìó“·T‚=¤Óµ¸²³±üÞ8%4á8ó“ó“°°
±ó“$è8¹
,î8üˆ9%49ó“ó“°°
²ó“$9¹
,˜9ä²9Tµ9ó“°°
³ó“$À9LÔ9$Ù9°°üã9,<æ9ó“ó“‹Ó°°
µó“$î9¹
,ô9ü¿;3|Â;ó“‹Óó“°°
ó“$Ò;maskÁ$Ø;L=$‡=°°ü‘=(l”=¬Óó“°°
¸ó“´ ¢=üà?#\ñ?¹¹¿¢,þ?¹¿¢¿¢ºººôÌ@,Ï@ó“ó“¹¹
ºó“ï½4Õ@ü…A!L–A»»¿¢,¡A»¿¢¿¢¼¼¼ôÃA,ÆAó“ó“»»
¼ó“ï½4ÌA´üA´–Bü±B"TÂB¿¿¿¢,ÎB¿¿¢¿¢ÀÀÀ¬ÚBÝBó“¿¿
Àó“$áBÄóBÂÀ¤¨C«CÁÁ
Â$¯CôÕCŒâC ôC ÏO úC D , ûC8´üC& þC8¼,ÿC$ „D, †D8ÛÇD& ŠD8¼,D*D •D ÌO8$ŸD8î!t¤D8
³D, ·D8´¸D »D ÕK=8!$ÉD8²"$ÎD ÓD8º$ÕD% ÙD8!$çD8ä"$ìD ñD, óD8ÛÃôD% ÷D+ †E ‡E E8Ý4ˆE ŽE •E8±4E8 ¤E8„"4§E ­E ¿E8$®E$ ²E8¹
,´E& ¹E8$»E(ÁE8º$ÄE ÉE ôE8$ÛE àE8¹
,âE+ ƒF „F “F8Ý4…F F F8±4ŒF8 ¡F8"4¤F ªF ¼F8$«F$ ¯F8¹
,±F& ¶F8$¸F(¾F8º$ÁF ÆF òF8$ØFÝF8¹
,àF+ G G G8Ý4ƒG ‰G G8±4ŠG8 ŸG8 "T¢G ¬G ±G8$­G(³G8º$¶G »G êG8$ÍG ÑG8 is_finiteÁLÒG ÛG ÜG+ ùG úG ‰H8Ý4ûG H ˆH8±4H8 —H8¾"<šH ¡H ³H8$¢H$ ¦H8¹
,¨H& ­H8$¯H(µH8$¸H'¼H8²"$¾H ÃH îH8$ÕH ÚH8¹
,ÜH+ ýH þH I8Ý4ÿH …I ŒI8±4†I8 I8Í"|žI ­I ÄI8$®I$ ²I8úÕ$´I& ¸I8$ºI'¾I8²"$ÀI(ÆI8$ÉI ÎI ×J 8 debug_assertÁdàI ìI íI “J8úÕ$îI$ òI7At least one lane must be setÁüôI% ”J ¦J, §J8´¨J ªJ'«J8ºÊL­J ¶J ÉJ8$·J »J8to_bitsÁ<¼J ÃJ ÄJ ÆJ7 ÈJ+ æJ çJ îJ8Ý4èJ8 üJ8ð"lÿJ ŒK šK8´ K& ŽK8$K'”K8ä"$K(œK8$ŸK ¤K ËK8´ ¶K8¸K, »K8´¼K+ àK áK ëK8ââK åK êK8$æK8$õK8Ÿ¤úK8
L, “L8´”L —L ¡O8!$¥L8ScalarÁ4ªL ±L, ³L8´´L% ¶L+ ÅL ÆL ÍL8Ý4ÇL8 ÛL8replaceÁ<ÞL åL M 8$æL$ êL8Ö,ìL& ñL8¬,óL$ øL8 new_valueÁLúL& ƒM8$…M'‰M8¸é4M(“M8$M M ïM8debug_assert_eqÁ|­M ¼M ½M ÆM8Ö,¾M$ ÃM7ˆ ÅM% ÇM8æêLÙM+ þM ÿM †N8Ý4€N8 ”N8 extract_laneÁd—N £N ¶N8$¤N$ ¨N8Ö,ªN& ¯N8¬,±N(¸N8$»N'¿N8¸é4ÁN ÈN —O8¼ë|ÚN éN êN óN8Ö,ëN$ ðN7ˆ òN% ôN8$†O8$¬O8…#\±O8
½O, ÁO8´ÂO ÅO ÆO% ÍO¬à èL’!Pż„!lµ!ìä Distributions over slicesÁ,½!Ú ë ì NonZeroUsizeÁd²–ÆÇ¨-t½ÝÆÉìwdÍ ÆÊ²!ÆËÒßúHÆÌ¼‡r¬¥bdQSÔà@¬š.ÌðË$Î¥ÏÎÏÿ“ ùݼÐÑõüž1üJG Create a new `Choose` instance which samples uniformly from the slice.Áßúüç2/ Returns error [`Empty`] if the slice is empty.Á¥ Ë$
§«Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ݼß½ÍÍ
ÐË$§«žüî)ü´52 Returns the count of choices in this distributionÁ\õÓ Óݼô ô õ ¨÷ ˆÐ  mjçítoéÍ Í
ÑË$§«$‚ü¼1Ë$Ó¥ÔÓÔÿ“ ÅݼÕ#ÕÁüô>ÔÕ Ôݼ Õâ•ͽÒ£ÖÖ ÒŒ– þT
ÕË$§«â•$—°6.0ü‹!ß½ØÅcØü³DÖר Öß½ × c cˆ¢cµ
 `£c ë `àB¤GS
Ø‚ú× º×
ر Áü• »À¼ýß½üÔ-»¤ŒÀ̺8ÙÙ¾ÛBÛüˆ]l‹ÚÛÜ Ú¾ Ûý« Ü»¸Ú£ÜÜ ±Ú޹ Ÿ¬
Û8ý«°6¸øÚ:<ÛÎ…Ýç…Ý…†ÝÝÛÝý« ç®,!ÛÎ…Þç…Þ…†ÞÞÛÞý« |Ä!ü˜C
@ A distribution uniformly sampling numbers within a given range.ÁÜ
úüàN
K [`Uniform`] is the standard distribution to sample uniformly from a range;Áü¯X
U e.g. `Uniform::new_inclusive(1, 6).unwrap()` can sample integers from 1 to 6, like aÁüˆH
E standard die. [`Rng::random_range`] is implemented over [`Uniform`].ÁÑ
úœÕ
 # Example usageÁé
ú
¨Æ”õ
 use rand::Rng;Áìˆ
 use rand::distr::Uniform;Á¦
úôª
©ÈüÉ2
/ let side = Uniform::new(-10.0, 10.0).unwrap();Áü
úü€%
" // sample between 1 and 10 pointsÁü¦*
' for _ in 0..rng.random_range(1..=10) {矄O
L // sample a point from the square with sides -10 - 10 in two dimensionsÁü¡:
7 let (x, y) = (rng.sample(side), rng.sample(side));矆(
% println!("Point: {}, {}", x, y);Á,…
‡ <
¨Æ
úü— 2
/ # Extending `Uniform` to support a custom typeÁÊ
úüÎ K
H To extend [`Uniform`] to support your own types, write a back-end whichÁüš
Q
N implements the [`UniformSampler`] trait, then implement the [`SampleUniform`]Áüì
L
I helper trait to "register" your back-end. See the `MyF32` example below.Á¹
úü½ P
M At a minimum, the back-end needs to store any parameters needed for samplingÁüŽ N
K (e.g. the target range) and implement `new`, `new_inclusive` and `sample`.ÁüÝ O
L Those methods should include an assertion to check the range is valid (i.e.Áü­
C
@ `low < high`). The example below merely wraps another back-end.Áñ
úüõ
M
J The `new`, `new_inclusive`, `sample_single` and `sample_single_inclusive`ÁôÃ
 functions use arguments ofÁüâG
D type `SampleBorrow<X>` to support passing in values by reference or矻I
F by value. In the implementation of these functions, you can choose toÁüôT
Q simply use the reference returned by [`SampleBorrow::borrow`], or you can choose矃F
C to copy or clone the value, whatever is appropriate for your type.Á
ú<”
¨ÆÌœ
àÇü¶6
3 use rand::distr::uniform::{Uniform, SampleUniform,Áüí?
< UniformSampler, UniformFloat, SampleBorrow, Error};Á­
ú´±
 struct MyF32(f32);ÁÈ
úüÌ!
 #[derive(Clone, Copy, Debug)]Áüî+
( struct UniformMyF32(UniformFloat<f32>);Áš
úüž*
' impl UniformSampler for UniformMyF32 {Á¼É
 type X = MyF32;Áá
úüå@
= fn new<B1, B2>(low: B1, high: B2) -> Result<Self, Error>Áü¦4
1 where B1: SampleBorrow<Self::X> + Sized,ÁüÛ3
0 B2: SampleBorrow<Self::X> + SizedÁL
ü™W
T UniformFloat::<f32>::new(low.borrow().0, high.borrow().0).map(UniformMyF32)Á
üûJ
G fn new_inclusive<B1, B2>(low: B1, high: B2) -> Result<Self, Error>矮4
æ‘üû3
¤’
à’ü¹a
^ UniformFloat::<f32>::new_inclusive(low.borrow().0, high.borrow().0).map(UniformMyF32)ÁL
Ó“ü¥C
@ fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Self::X {Áüé%
" MyF32(self.0.sample(rng))ÁL
Ó“,™
‡ Ÿ
úü£"
 impl SampleUniform for MyF32 {矮$
! type Sampler = UniformMyF32;Á
‡ ñ
úüõ7
4 let (low, high) = (MyF32(17.0f32), MyF32(22.0f32));Áü­3
0 let uniform = Uniform::new(low, high).unwrap();Áüá-
* let x = uniform.sample(&mut rand::rng());Á<
¨Æ
úü›;
8 [`SampleUniform`]: crate::distr::uniform::SampleUniformÁü×=
: [`UniformSampler`]: crate::distr::uniform::UniformSampler知5
2 [`UniformInt`]: crate::distr::uniform::UniformIntÁüË9
6 [`UniformFloat`]: crate::distr::uniform::UniformFloatÁü…?
< [`UniformDuration`]: crate::distr::uniform::UniformDuration矁I
F [`SampleBorrow::borrow`]: crate::distr::uniform::SampleBorrow::borrowÁ<Ì!àïÛÝ÷Í Ý Þ ÜfdÖ
ó îÂjT¦
°
ìwd²
 éx\‰
 ÀÎy|
ª Á׳
 `ß¹
£ßľ
½£ßÅÃ
«£ßÆÄ„è
УßDzdŽ!
!ßÈÒ÷6¨!
øßÊžÂ<­!
|ßËL­

ßó Ó.,ÇÍ àâ…/dÎ÷àã‹-lÜÛàä¨-tëÝàåèL•PàæÈ#Tº¿àè…#\ƹàéî!tÓ°àê¥#Lã»àë÷6úøàì,¿ÖØÅÇ´£¥ô€–œ¤ˆŠwyfhUWTóHüÞ”ë þ Ö<  à,   , 8û$ˆ& Œ8û$- $ , 8´& ˜8´$ , 8ÛÞ& ¡8¼$ §, ©8‰Ä& ²8¼$ ¸, º8¼Ä& Ã8¼$ É, Ë8bits_to_discardÁ& Û8*â å Ó<, ï ð þ+ ñ ò ý8âó ö ü, ÷8û- ÿ8$‰8Üf š, 8´œ ž   È<@ Construct, reducing `scale` as required to ensure that roundingÁü®C<, can never yield values greater than `high`.Áüþ/<úº<@ Note: though it may be tempting to use a variant of this methodÁüÊC<> to ensure that samples from `[low, high)` are always strictlyÁüšA<7 less than `high`, this approach may be very slow whereÁüè:<0 `scale.abs()` is much smaller than `high.abs()`Áü¯3</ (example: `low=0.99999999997819644, high=1.`).Áüï28 ®8îg ¼ à8øf½& À, Â8´Ã$ Å8¸& Ë, Í8´Î$ Ð8Ò8ƒg& Û, Ý8´Þ(â8 ê ¾8ü8max_randÁD€  , Œ8´ '8˜#,  ½ 7ÊИ8œ, Ÿ8‰Ä ©, «8‰Ä'´8Óå% ¾8 Ö Â8ì8úÕ õ ÷ Ž8ƒg
þ8ÒªD€ 8øf 8¾"<  œ8¸% 8³ 8úÕ »8º¼ ¿ À  ÷8% á8ƒg, 8ƒg,• š8Í"| ª ¯8úÕ% °8“å á â 
 ã, ä8´å ç'è8˜# ï ó70.0Áð ô8" û 8ƒg% ƒ8Üfd– £ °8øf¥$ ¨8ƒg, Ó Ô â+ Õ Ö á8â× Ú à, Û8û- ã88-8
, 8´ ˆ À 8!$8Š'< £8Üf ±, ²8´³ µ% , Ë Ì Ú+ Í Î Ù8âÏ Ò Ø, Ó8û- Û88¨-8
ù8Üf , Š8´   Í<È8!$8© ¢ ¤, ¦8´§% ©8 ¸8æ » ¾8®'¿$ Á8¸'Ã Å Æ Ü8low_bÁ& Ì8®'Î$ Ð8high_bÁ& Ø8¸'Ú(Þ8Í ç8$ ì8Ó. ó8$,8®'& 8…/d §8'¬8© ® ¯ ±8Ø$ ¸8¸'Ê& Ì8…/ Ú8'ß8© á â ä8Ø$ ë ù Ì!,88øf 
8Á´,– 8©/ ¢ £% ¤88¸ ¿
Á8ê´ È8©/ Ï Ð% Ñ+ ã ä ú8âå è ù8„é8Œ   ¡8øf 8 "T• Ÿ  £ ¦ § ¹8¸ ¬8 "T­ · ¸ » ÿ88Ø Û ì8Ó.'á8«|% í8   ¦8øf 8„"   ¥8¸ ¨ í88Å È Ú8Ó.'Î8”|% Û88ƒg,„  Š 8¸ 8øf% 8¨  «  ¬  ¿ 8ƒg,­  ² 8 " ½  ¾  Á  …!88Þ  á  ò 8Ó.'ç 8«|% ó 8«˜! š! ¾!8$!'Ÿ!8îg\¡! ¬! ½!8øf­!$ °!8¸$²!$ ¶!8ƒg,¸!8 Û!8Â'lÞ! ë!8®'ì!$ î!8¸'ð! ò! ó! ‰"8Á´,ô!& ù!8®'û!$ ý!8ê´4ÿ!& …"8¸'‡"("8Í4Ž" ”"8$•"$ ™"8Ó.,"  "8$,®"8®'Ä"& Æ"8…/dÈ" Ô"8$Õ"'Ù"8© Û" Ü" Þ"8Ø,à"$ å"8¸'÷"& ù"8…/dû" ‡#8$ˆ#'Œ#8© Ž# # #8Ø,“#$ ˜# ¦# Ö(=8¸#8øf¼# À#
Â#8Á´,Ã# È#8©/4É# Ï# Ð#% Ñ#8ã#8¸$ç# ì#
î#8ê´4ï# õ#8©/4ö# ü# ý#% þ#+ $ $ §$8â$ •$ ¦$8„–$8¹$ ¼$ ½$ Î$8øf¾$ Á$8 "TÂ$ Ì$ Í$Ð$ Ó$ Ô$ æ$8¸$Õ$ Ù$8 "TÚ$ ä$ å$ è$ ¬%84þ$8…% ˆ% ™%8Ó.,‰%'Ž%8«|L%% š%8¾% Á%8øfÂ% Å%8"4Æ% Ì% Ñ%8¸$Í% Ó% ˜&84é%8ð% ó% …&8Ó.,ô%'ù%8”|Tû%% †&8«&8ÒªD¯& ¸& º&, »&8´¼& ¾&'¿&8˜#,Á& Æ& ì& 7ÊÐÇ&8Ë&, Î&8‰ÄDÏ& Ø&, Ú&8‰ÄDÛ&'ã&8Óå<å&% í&8ÿ&8ƒg,ƒ' ‰' ' '8¸$Œ' '8øf“' ˜'8ÒªDš'% ¢'8´' ·'8ƒg,¸' ½'8 "T¾' È' É' Ë' (84á'8è' ë' ü'8Ó.,ì''ñ'8«|Ló'% ý'8«¢( ¤( È(8$¥('©(8îg\«( ¶( Ç(8øf·($ º(8¸$¼($ À(8ƒg,Â(8 å(8Ô4è( î(8£ ï(& ð(8÷6ò( ö(- ø(8Ø,ù( þ( ÿ( ) €)8$)$ …)8°6‡)& Š) Œ)8)8£ )(”)8$—)')8© ) Ÿ) °/8é)8value1_2ÁDí) ö) ø) ®*8°6ù) ü)874ý)'ƒ* …*, †*8ÛÇ* Š* ‹* Œ*Ž*, *8ÛÃ*'•*8˜#,—* œ* ­*, *8Á£|ž* ¯*8ÿİ* È* Ê*7ˆ É*% Ë*8½+8value0_1ÁDÁ+ Ê+8ÑÌD
k#<€

ß°
Ó.,ÅÍ ïñ…/dÌ÷ïò‹-lÚÛïó¨-téÝïôø „“©ïõ÷6øïöƒrtacPRüþ%DTý5ìý„Š  ¡R ¡ Ã, ¢8´£& ¥8´¦$ ¨, ª8Ûë& ®8´¯$ ±, ³8 sample_tyÁL´& ½8¼*Å È žR88-l×8
å, é8´ê í £ 8!8Š'<€ ˆ8Âj , 8´ ˜% 88¨-8
Â8Âj Ð, Ñ8´Ò Ô Ö ˜Rˆ8!8© ì î, ð8´ñ% ó+  ƒ Š8Ý4„8 8æ  Œ8®'$ 8¸'   ª8Á´,•& š8®'œ$ ž8ê´4 & ¦8¸'¨(¬8Í µ8$ º8Ó. Á8$8®'å& ç8…/ õ8'ú8© ü ý ÿ8Ø, $ 8¸'˜ & š 8…/ ¨ 8'­ 8© ¯  °  ² 8Ø$ ¹  Ç  Ò"8Ù 8øfÝ  á 
ã 8Á´ é 8©/ ð  ñ % ò 8„!8¸$ˆ! !
!8ê´4! !8©/4—! ! ž!% Ÿ!8±! ´! µ! À!8øf¶! º!8¸$¼! Â! ‡"84Ø!8ß! â! ô!8Ó.,ã!'è!8”|Tê!% õ!8¨-t™"'§"8Â'l©" ¶" Ä"8øf·"$ º"8¸$¼" Á"7 Ã"+ á" â" é"8Ý4ã"8 å#8Â'lè# õ#8®'ö#$ ø#8¸'ú# ü# ý# “$8Á´,þ#& ƒ$8®'…$$ ‡$8ê´4‰$& $8¸'$(•$8Í4˜$ ž$8$Ÿ$$ £$8Ó.,¥$ ª$8$,¸$8®'Î$& Ð$8…/dÒ$ Þ$8$ß$'ã$8© å$ æ$ è$8Ø,ê$$ ï$8¸'%& ƒ%8…/d…% %8$%'%8© ˜% ™% %8Ø,%$ ¢% °% û*18Â%8øfÆ% Ê%
Ì%8Á´,Í% Ò%8©/4Ó% Ù% Ú%% Û%8í%8¸$ñ% ö%
ø%8ê´4ù% ÿ%8©/4€& †& ‡&% ˆ&8š& & ž& ª&8øfŸ&£&8¸$¦& ¬& ñ&84Â&8É& Ì& Þ&8Ó.,Í&'Ò&8”|TÔ&% ß&8„'8Âe,ˆ' Ž'8¸$' ”'8ëd•' ¡' ¥'8øf¢' ¦'8æd§' ³' µ'7 ´'8·', º'8Ûû'% ¾'8Ð'8ìj4Ô' Û'8Ý'8Âe,à' æ'7ˆ è' ê' è(
8€(8Âe,„( Š(, Œ(8ŸæL('(8÷$˜( œ( ¢(8Âe,(% £( ¹( Ö(8Âe,º( ¿(8 wrapping_negÁdÀ( Ì( Í( Ï(8Âe,Ñ(8$ê( ï( —)7ˆ …)% ˜)8««) ­) í*8ÂjT®) ¹) ì*8øfÏ)$ Ò)8Âe,è)& í)8Âe,ï)8õ), ø)8´ù)$ û)8ìj4©*& ¯*8ìj4±*8¸*, »*8Ûü*8À*, Ã*8´Ä*$ Æ*<4 Sample from distribution, Lemire's method, unbiasedÁüŠ+7+ Î+ Ï+ Ö+8Ý4Ð+8 ä+8Ô4ç+ í+8£ î+& ï+8÷6ñ+ õ+- ÷+8Ø,ø+ ý+ þ+ , ÿ+8$€,$ „,8°6†,& ‰, ,8Œ,8£ ,(“,8$,'š,8© œ, ž, “0+8°,8Âe,´, º,8$¼, À,8Âe,Á,8Ç,, Ê,8ÛÃË,8Ï,, Ò,8ŸæLÓ,% Ü,8î,8Âe,ñ,÷,7ˆ ú, ü, ·-84-8°6™- œ-874- £- ¤-% ¥-8Ê-8ìj4Î- Õ-8$×- Û-8ìj4Ü-8ã-, æ-8ÛÃç-8ë-, î-8ŸæLï-% ø-8Š.8ᬎ. .8$“. ˜. Ó/8®. ². ¹.8ᬳ.$ µ.8 ®·. ».8°6½. À.874Á.'Ç. É., Ê.8ŸæLË. Ô. Õ. Ö. ×.8£!$Ø. Ü. â.8Âe,Ý.% ã.8ù.8 ®ü.ÿ.8ìj4/ ‰/ Á/8,£/8ᬩ/% «/% Ô/8$æ/ ê/8øfë/ î/8ædï/ û/ …08á¬ü/8ÿ/, 08´ƒ0+ ¢0 £0 ª08Ý4¤08 ¸08÷'l»0 È08£ É0& Ê08÷6Ì0 Ð0- Ò08Ø,Ó0$ Ø08®'Ú0$ Ü08¸'Þ0 à0 á0 Ã18Á´,ó0& ø08®'ú0$ ü08ê´4Ž1& ”18¸'1$ ˜18°6ª1& ­1 ¯18°18£ ´1$ µ1(Å18Í4È1 Î18$Ï1'Ó18© Õ1$ Ö18Ó.,Ø1 Ý18$,ë18®'2& ƒ28…/d…2 28$2'28© ˜2 ™2 28Ø,2$ ¢28¸'´2& ¶28…/d¸2 Ä28$Å2'É28© Ë2 Ì2 Î28Ø,Ð2$ Õ2 ã2 ó48õ28øfù2 ý2
ÿ28Á´,€3 …38©/4†3 Œ3 3% Ž38 38¸$¤3 ©3
«38ê´4¬3 ²38©/4³3 ¹3 º3% »38Í3 Ð3 Ñ3 Ü38øfÒ3 Ö38¸$Ø3 Þ3 £484ô38û3 þ3 48Ó.,ÿ3'„48”|T†4% 48$µ4'¹48®(¼»4 Ò4 å48øfÓ4$ Ö48¸$Ø4 Ý47 ß4$ à48°6â4<, Sample single value, Canon's method, biasedÁü‚5/<ú¾5<> In the worst case, bias affects 1 in `2^n` samples where n isÁüÎ5A<= 56 (`i8`), 48 (`i16`), 96 (`i32`), 64 (`i64`), 128 (`i128`).Áüœ6@+ é6 ê6 ‰78âë6 î6 ˆ78
ï6 ò6 ‡78»<ó6 û67unbiasedÁTý6+ —7 ˜7 Ÿ78Ý4™78 ­78®(¼°7 Ç78£ È7& É78÷6Ë7 Ï7- Ñ78Ø,Ò7$ ×78®'Ù7$ Û78¸'Ý7 ß7 à7 Â88Á´,ò7& ÷78®'ù7$ û78ê´48& “88¸'•8$ —88°6©8& ¬8 ®88¯88£ ³8$ ´8(Ä88Í4Ç8 Í88$Î8'Ò88© Ô8$ Õ88Ó.,×8 Ü88$,ê88®'€9& 98…/d„9 98$9'•98© —9 ˜9 š98Ø,œ9$ ¡98¸'³9& µ98…/d·9 Ã98$Ä9'È98© Ê9 Ë9 Í98Ø,Ï9$ Ô9 â9 ýBF8ô98øfø9 ü9
þ98Á´,ÿ9 „:8©/4…: : Œ:% :8Ÿ:8¸$£: ¨:
ª:8ê´4«: ±:8©/4²: ¸: ¹:% º:8Ì: Ï: Ð: Ü:8øfÑ:Õ:8¸$Ø: Þ: £;84ô:8û: þ: ;8Ó.,ÿ:'„;8”|T†;% ;8µ;8Âe,¹; ¿;8¸$Á; Å;8ëdÆ; Ò; Ö;8øfÓ; ×;8ædØ; ä; æ;7 å;8è;, ë;8ÛÃì;8ð;, ó;8ŸæLô;% ý;8<8Âe,<˜<7ˆ < < ¯=84†=8«= = œ=8°6= “=874”= š= =% =8…> ‰> ž>8Š>8 4Ž>$ ”>8lo_orderÁD>  >8°6¢> ¥>874¦>'¬> ®>, ¯>8ŸæL°> ¹> º> »> ¼>8£!$½> Á> Ç>8Âe,Â>% È>8‰?8ö—DŒ? •?8Âe,—? œ?8´ød? ©? ª? ¬? ºB8„@ ˆ@ ˜@8 new_hi_orderÁd‰@$ •@8 —@ š@ œ@ ·@ 8°6@  @874¡@'§@ ©@, ª@8ŸæL«@ ´@ µ@ ¶@ ¸@8£!$¹@ ½@ Ñ@8Âe,¾@8Ä@, Ç@8ŸæLÈ@% Ò@8£A8 is_overflowÁ\§A ³A8ö—DµA ½A8 checked_addÁ\¾A ÉA äA8ÿ™dÊA8×A, ÚA8ŸæLÛA åA8is_noneÁ<æA íA îA% ïA8 4…BŒB8å›\B8B, žB8ŸæLŸB% ¨B8«ÍB ÏB ïB8øfÐB ÓB8ædÔB àB îB8 4áB8èB, ëB8´ìB<. Sample single value, Canon's method, unbiasedÁüŒC1+ ÊC ËC åC8âÌC ÏC äC8»<ÐC ØC7äTÚC+ óC ôC ûC8Ý4õC8 ‰D8®(¼ŒD £D8£ ¤D& ¥D8÷6§D «D- ­D8Ø,®D$ ³D8®'µD$ ·D8¸'¹D »D ¼D žE8Á´,ÎD& ÓD8®'ÕD$ ×D8ê´4éD& ïD8¸'ñD$ óD8°6…E& ˆE ŠE8E8£ E$ E( E8Í4£E ©E8$ªE'®E8© °E$ ±E8Ó.,³E ¸E8$,ÆE8®'ÜE& ÞE8…/dàE ìE, íE8´îE ðE òE8Ø,ôE$ ùE8¸'F& F8…/dF F, œF8´F ŸF ¡F8Ø,£F$ ¨F ¶F ŽRF8ÈF8øfÌF ÐF
ÒF8Á´,ÓF ØF8©/4ÙF ßF àF% áF8óF8¸$÷F üF
þF8ê´4ÿF …G8©/4†G ŒG G% ŽG8 G £G ¤G °G8øf¥G©G8¸$¬G ²G ÷G84ÈG8ÏG ÒG äG8Ó.,ÓG'ØG8”|TÚG% åG8‰H8Âe,H “H8¸$•H ™H8ëdšH ¦H ªH8øf§H «H8æd¬H ¸H ºH7 ¹H8¼H, ¿H8ÛÃÀH8ÄH, ÇH8ŸæLÈH% ÑH8ãH8Âe,æHìH7ˆ ïH ñH ƒJ84ÚI8«áI ãI ðI8°6äI çI874èI îI ïI% ñI8J šJ ­J8J8 4ŸJ$ ¥J8§J8 ®«J ¯J8°6±J ´J874µJ'»J ½J, ¾J8ŸæL¿J ÈJ ÉJ ÊJ ËJ8£!$ÌJ ÐJ ÖJ8Âe,ÑJ% ×J8%,¯K8 ®µK ¸K8Âe,ºK ¿K8´ødÀK ÌK ÍK ÏK ËQ8åK éK øK8new_hiÁ4êK$ ðK8new_loÁ4òK úK üK —L 8°6ýK €L874L'‡L ‰L, ŠL8ŸæLL ”L •L L ˜L8£!$™L L £L8Âe,žL% ¤L8,ºL8 ®ÀL ÂL8•œ\ÃL ÎL ÕL8¶«4ÏL ×L
êQíQÞQáQLß

ß ¡¢ ª ¸ Ó.,Ú Í …/dá ÷‹-lï Û„}<þ Ý ˜„}Þ ˜ÂjT‡ °
¨-t“ Ýš² !Ò÷6Ï øœ¤Î ­Ö àâÏѾÀ­¯rtÔ¨ eTÈ S¤Ø ?ܯ ŸÜ žžüÊüü
 ¤‚ ìÆ ”Ì ü­ # „° 
¢® Á üÃ
# üʤ¥©­Þßâ奭©
ò
££üõœ ø Š´´Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
üÊðÏ£®'¦¸'§§¦£™µ ÷Š´üÊÞ¬È ǵ,‹ ÷´ÔǬó
¥Š´´Á´,„ ê´4 ü   ¥Î…¨ç…¨…†¨¨¥¨Š´´¹ÇüÊüó¦ Š´´¼Æ£®'ª¸'«ª«£™µ ÉǬРǵ,“ ìǬû
©Š´´Á´ ê´4—  ˆ  ©Î…¬ç…¬…†¬¬©¬Š´´šÉü‘9 4” áâ áüÊ â±ßÔÇ££®® ¬ £   ‰ž
­±ß$­ °6³ $&ü÷1 »¤Œã ÌÝ ƒÌ°B°ü¯Œ ãäå ãƒÌ ä±ß 廸¯£±± Ú ¯ À  ‰Ã
°±ß °6é ø ª 57ü% ˜Ï³Üd¶% <»% ²²¾ÌüÙ%' ¾Ìµ¹½Þßâå¹½4‡& Œ& ´´˜Ïü­&œ °& Š´´Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¾ÌðÏ´®'·¸'¸·¸´™µ,˜' ÷Š´¾ÌÞ¬€' ǵ,Ã' ÷´¤Ñ¬«'
Š´´Á´,¼& ê´4Ç& ´& ¸& üÉ)¦ lÌ) Š´´ŒÐ´®'º¸'»º»´™µ,¾* ™Ñ¬¦* ǵ,é* ¼Ñ¬Ñ*
¹Š´´Á´,â) ê´4í) Ú) Þ) Ç0 ¹Î…¼ç…¼…†¼¼¹¼Š´´½Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ üØ6: 4Û6 æç æ¾Ì ç±ß˜Ï´£¾¾ ó6 ´ â6  ‰å6
½±ß$ô6 °6ú6 $&,
ì[ï[à[ã[L­
Ø[L¼
Ê[Í[º[½[ª[­[š[[Ô€!
Ž[, !
}[€[i[l[Üè#
ðÏÍÅcÍüŠ$8
$
èéê èðÏ é c cˆ¢cµ
 `£c ë `àB¤GS
ê‚úÌ ‘$
Ì
Í$$
± ˜$
ü½&
»À|«&
¼¥&
ðÏü™B!
©ÐÐÍìп žB
Ûпl¡B
‹ÑÑÔ üðF–
üÁBJ
G Create a new `Uniform` instance, which samples uniformly from the halfÁüC0
- open range `[low, high)` (excluding `high`).ÁÅC
úüÍCL
I For discrete types (e.g. integers), samples will always be strictly lessÁüžDN
K than `high`. For (approximations of) continuous types (e.g. `f32`, `f64`),ÁüñDD
A samples may equal `high` due to loss of precision but may not beÁĺE
 greater than `high`.Á×E
úüßEL
I Fails if `low >= high`, or if `low`, `high` or the range `high - low` isÁü°F;
8 non-finite. In release mode, only the range is checked.Á÷F
¿¹ĹÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
‹ÑðÏÏ®'Ò¸'ÓÒÓÏ»,ÛG
÷¿¹п|ÉG
¨»,€H
÷Ĺп|îG
Ñп¿¹ĹøfƒG
¸$ŒG
ûF
ÿF
üÚJ 
üÈHL
I Create a new `Uniform` instance, which samples uniformly from the closed矪I$
! range `[low, high]` (inclusive).ÁÂI
úüÊIK
H Fails if `low > high`, or if `low`, `high` or the range `high - low` isÁüšJ;
ÚÜláJ
¿¹Ĺ·ÞÏ®'Õ¸'ÖÖÕÏ»,ÏK
Äß|½K
¨»,ôK
àß|âK
Ôп¿¹Ĺøf÷J
¸$€K
ïJ
óJ
üÄL5
©ØØùØ ÉL
ŠÙlÌL
‹ÑÙ#Ùü€M3
4ƒM
ëì ë‹Ñ ìý«п×£ÚÚ ›M
×޹ ŠM
Ÿ¬M
Ùпý«$œM
°6¢M
(*ôõO
üÚMI
F Helper trait for creating objects using the correct implementation ofÁü¤N-
* [`UniformSampler`] for the sampling type.ÁÒN
úüÖNH
E See the [module documentation] on how to implement [`Uniform`] rangeÁüŸO
 sampling for a custom type.Á¿O
úüÃO1
. [module documentation]: crate::distr::uniformÁlÿO
ÛÛ¿¢,ŽP
Û¿¢¿¢ÜÜÍìó“ÜüÛP'
ÝúèÄéP
úèÞó“DøP
òè,‹é!›éüÛP&
üšP<
9 The `UniformSampler` implementation supporting type `X`.Á<àP
ÛÛü°T
ü†Q2
/ Helper trait handling actual uniform sampling.Á¹Q
úü½QH
ôåü†R
Ææ¦R
úüªRL
I Implementation of [`sample_single`] is optional, and is only useful whenÁü÷RM
J the implementation can be faster than `Self::new(low, high).sample(rng)`.ÁÅS
úüÉS1
ûæüûS4
1 [`sample_single`]: UniformSampler::sample_singleÁtºT
ÝÝ¿¢,ÊT
Ý¿¢¿¢ÞßâåçëÞßâåçëÍìó“Þ<‡U
óíëçåßâ4‡U
üÖT,
) The type sampled by this implementation.Á ŒU
ÝÝüêX˜
ü”UW
T Construct self, with inclusive lower bound and exclusive upper bound `[low, high)`.ÁðU
úüøUL
ÛÙüÉVN
±ÚüœWD
‰ÛÄåW
ÖÛX
úüŠXA
> Usually users should not call this directly but prefer to useÁ¬ÐX
 [`Uniform::new`].ÁíX
¿¹ĹÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ó“ðÏÝ®'à¸'ááàÝ»,ÑY
÷¿¹ûí¬¹Y
¨»,üY
÷Ĺûí¬äY
ßó“¿¹ĹøfùX
¸$Y
ñX
õX
ü·[¢
üˆZ8
5 Construct self, with inclusive bounds `[low, high]`.ÁÅZ
úüÍZA
¸ïü“[
 [`Uniform::new_inclusive`].Álº[
¿¹Ĺ¹ñÝ®'ã¸'äãäÝ»,¨\
Æò¬\
¨»,Ó\
âò¬»\
âó“¿¹ĹøfÐ[
¸$Ù[
È[
Ì[
ü÷\:
ϧ\
 Sample a value.Á4ú\
íî íó“ îý«ûíÝ£ææ ’]
Ý޹ ]
Ÿ¬„]
åó“ý«$“]
°6™]
(*üÐfâ
ü·]K
H Sample a single value uniformly from a range with inclusive lower boundÁü‡^,
) and exclusive upper bound `[low, high)`.Á¸^
úüÀ^L
ÛÙü‘_N
±Úüä_D
‰ÛÄ­`
ÖÛÊ`
úüÒ`(
% By default this is implemented usingÁüÿ`I
F `UniformSampler::new(low, high).sample(rng)`. However, for some typesÁüÍaJ
G more optimal implementations for single usage may be provided via thisÁüœb7
4 method (which is the case for integers and floats).矯b!
 Results may not be identical.Áþb
úü†cK
H Note that to use this method in a generic context, the type needs to beÁüÖc6
3 retrieved via `SampleUniform::Sampler` as follows:Á<d
¨Æüd>
; use rand::distr::uniform::{SampleUniform, UniformSampler};Á´àd
 # #[allow(unused)]Áüûd?
< fn sample_from_range<T: SampleUniform>(lb: T, ub: T) -> T {Áü¿e"
 let mut rng = rand::rng();ÁüæeO
L <T as SampleUniform>::Sampler::sample_single(lb, ub, &mut rng).unwrap()Á,ºf
‡ <Äf
¨ÆlÓf
ï®'¸' ïý«Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ûíðÏÝ£è®'é¸'êéèê «g
Ý޹ áf
Ÿ¬äf
Íìûÿ,h
÷ûÿûí¬ég
Í쀀,¬h
÷€€ûí¬”h
çó“ý«ûÿ€€øfƒg
¸$”g
°6¦g
òf
öf
ü´lì
ü¡iK
Çöüñi,
) and inclusive upper bound `[low, high]`.Á¢j
úüªj(
¡øü×jH
E `UniformSampler::new_inclusive(low, high).sample(rng)`. However, forÁü¤kL
I some types more optimal implementations for single usage may be providedÁ¤õk
 via this method.ÁüŽl!
»ú¼·l
ðûÿ€€ ðý«’€Ý£ì®'í¸'îíîì ™m
Ý޹ Ïl
Ÿ¬Òl
º,ïm
ˬ×m
ß,šn
ð¬‚n
ëó“ý«ûÿ€€øfñl
¸$m
°6”m
Z\àl
äl
ü—o7
©ððùØ œo
ŠÙlŸo
‹Ññòòóò"$TÕo
,Úo
ïïðÏüîo5
Dño
—Ò·Þïï
òп½ úo
üÔp@
©ôôùØ Ùp
ŠÙlÜp
‹Ñõöòóö"$Tq
, q
óóðÏü´qK
D·q
ÞÒ·Þóó
öп½ Àq
üŠt
ü¾r6
3 Helper trait similar to [`Borrow`] but implementedÁüõrB
? only for [`SampleUniform`] and references to [`SampleUniform`]Áü¸s)
& in order to resolve ambiguity issues.Áâs
úüæs#
[`Borrow`]: std::borrow::BorrowÁd”t
÷™/ø÷øë“üŠtÍ
ÍìÐÓD¡t
÷ë“+ë“ùù*,ô·u
ü±tA
> Immutably borrows from an owned value. See [`Borrow::borrow`]Á÷t
úüÿt3
0 [`Borrow::borrow`]: std::borrow::Borrow::borrowÁ4ºu
ñ ñó“ ñÐÓ÷ Áu
÷
ùó“ÐÓ$Âu
üØuU
™/ûûÍìºÓDÝu
ÛºÓlŸv
ºÓüùü#%ìÊv
4Ív
ò òºÓïú Ôv
ú
üºÓ$Õv
üÿvV
8ó™/þþó±ŒD„w
ÛÐÓlÇw
ËÓÿùÿ#%ìòw
4õw
ô ôËÓ ôÐÓý üw
ý
ÿ8ÐÓ$ýw
Ä×y
ü¨x?
< Range that supports generating a single sample efficiently.Áèx
úüìxM
J Any type implementing this trait can be used to specify the sampled range犼y
 for `Rng::random_range`.Á\áy
¥ë“ü×yé
ÿ“ íy
ë“"ë“(‚35ü¦zM
üöy+
( Generate a sample from the given range.Ál©z
õó“ õâ•Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
§«ðÏ£ƒƒ ×z
Œ– ·z
|â•<ºz
ó“§«â•$Ìz
°6Òz
35Ü£{
üùz%
" Check whether the range is empty.ÁD¦{
ö öó“ ¯{

ó“§«$°{
üÂ{?
¥¸™ Ç{
ÛïºlÊ{
íßïºïºTÚ{
âÓCEü–|L
l™|
÷âÓ ÷ý«Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ïºðÏ£ˆˆ Ç|
޹ §|
|ý«<ª|
ïºý«$¼|
°6Â|
/1Ô»}
D¾}
ø øâÓ Ç}

ïº$È}
ü‚~H
¥¸™ ‡~
•˜lŠ~
¥˜Tš~
©ÔŒŽŒŽ.0üß~L
lâ~
ù©Ô ùý«–™Š£ 
Š޹ ð~
˜š<ó~
Œïºý«$…
°6
(*Ô’€
D•€
ú ú©ÔŠ ž€
Š
Žïº$Ÿ€
üÞ€
œë€
 ÿ€

 

, 
8¿ 
& ˆ
8´
*
 
Œ‡
8
8á/
 ª
, «
8¿ ¬
 ­
8
¯
8Ã
 º
, »
8¿ ¼
 ½
 ¿
…„
+ Í
 Î
Õ
8Ý
8 ã
8÷'
 ó
8£ ô
& õ
8žÂ
ÿ
- 
8Ø,‚‚
 ‡‚
 ˆ‚
š‚
8$‰‚
$ 
8°6
& ’‚
 ”‚
8•‚
8£ ™‚
(œ‚
8Í4Ÿ‚
 ¥‚
, ¦‚
8¿ §‚
$ ¨‚
8Ó.,ª‚
 ¯‚
 ±‚
ƒ
  Â
, Ä‚
8¿ Å‚
8Ç‚
8-lʂ
 ׂ
'Ø‚
8Š'<Ú‚
'á‚
8÷'lã‚
 ð‚
ƒ
7ˆ ñ‚
$ ò‚
8$ô‚
 ø‚
8þù‚
$ ü‚
8°6þ‚
+ žƒ
 Ÿƒ
¦ƒ
8Ý4 ƒ
8 ´ƒ
8Œ0D·ƒ
 ¿ƒ
Ń
 Àƒ
8$Áƒ
(ǃ
8º$ʃ
 σ
ûƒ
7ˆ áƒ
ãƒ
8$æƒ
 êƒ
8þëƒ
8$
8á/\•„
  „
, ¡„
8¿ ¢„
 £„
8
¥„
8Ä„©„
 ¹„
, º„
8¿ »„
 ¼„
 ¾„
†‡
+ Ì„
 Í„
Ô„
8Ý4΄
8 â„
8÷'lå„
 ò„
8£ ó„
& ô„
8žÂ<ö„
þ„
- €…
8Ø,
 †…
 ‡…
™…
8$ˆ…
$ Œ…
8°6Ž…
& ‘…
 “…
8”…
8£ ˜…
(›…
8Í4ž…
 ¤…
, ¥…
8¿ ¦…
$ §…
8Ó.,©…
 ®…
 °…
˜†
  Â…
, Ã…
8¿ Ä…
8Æ…
8-lÉ…
 Ö…
'×…
8Š'<Ù…
'à…
8®(¼â…
 ù…
І
7ˆ ú…
$ û…
8$ý…
 
8þ‚†
$ …†
8°6‡†
+ §†
 ¨†
¯†
8Ý4©†
8 ½†
8Œ0DÀ†
 Ȇ
Ά
 Ɇ
8$ʆ
(І
8º$Ó†
 ؆
ü†
8 ,ê†
% 
„ï!ìä Weighted (index) samplingÁúü†EB Primarily, this module houses the [`WeightedIndex`] distribution.ÁüÌPM See also [`rand_distr::weighted`] for alternative implementations supportingÁüKH potentially-faster sampling or a more easily modifiable tree structure.Áéúüí^[ [`rand_distr::weighted`]: https://docs.rs/rand_distr/latest/rand_distr/weighted/index.htmlÁ»¤ŒÛ!ÌÕ!D÷!ÅÛ
×× `ò€l‰¡
Ä)”ܧ¡
Ó.,ð Û
³44÷ Å…/dœ ÷‹-lª Û˜¨-t¹ ݲ !šÒ÷6õ øöÚ ªBœ×  `žp,õ ¿cŸpÂcŸ ìîÛݬ„ Îн¿¬®ÔÎ ŸTî  zLã ké ]_ü¯4 ©¡¡ùØ ´ ŠÙ íßпп ÅÚ¢¤+-ü¶!” üêE B Creates a new a `WeightedIndex` [`Distribution`] using the valuesÁü´? < in `weights`. The weights can use any type `X` for which anÁüø, ) implementation of [`Uniform<X>`] exists.Á© ú„±
Error cases:ÁüÆE B - [`Error::InvalidInput`] when the iterator `weights` is empty.ÁüK H - [`Error::InvalidWeight`] when a weight is not-a-number or negative.ÁüàK H - [`Error::InsufficientNonZero`] when the sum of all weights is zero.Áü° B ? - [`Error::Overflow`] when the sum of all weights overflows.Á÷ úüÿ 2 / [`Uniform<X>`]: crate::distr::uniform::UniformÁ½! šÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÅÚ»Ý š££ Íì¶· Á! ÇL¶·dˆ" ÷¶·ÈLп|§" Åп4Ã"
¢п¶·á3<Ä! TVü²4è ü¹+G D Update a subset of weights, without changing the number of weights.Á…, úü,. + `new_weights` must be sorted by the index.ÁÀ, úüÈ,X U Using this method instead of `new` might be more efficient if only a small number ofÁü¥-V S weights is modified. No allocations are performed, unless the weight type `X` usesÁÔ€.  allocation internally.ÁŸ. úü§.: 7 In case of error, `self` is not modified. Error cases:Áüæ.E B - [`Error::InvalidInput`] when `new_weights` are not ordered byÁü°/' $ index or an index is too large.ÁüÜ/K ç³ü¬0K ¼´üü0K H Note that due to floating-point loss of precision, this case is notÁüÌ1L I always correctly detected; usage of a fixed-point weight type may beÁ2  preferred.Á´2 úü¼2P M Updates take `O(N)` time. If you need to frequently update weights, considerÁü‘3c ` [`rand_distr::weighted_tree`](https://docs.rs/rand_distr/*/rand_distr/weighted_tree/index.html)Áüù34 1 as an alternative where an update is `O(log N)`.Át¹4 ûüý ûÅÚ ü
 ýпÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
»Ý  È4  ¥Ùõп ¥пüš5# ¦œöп ¦пüÌ5# Øп,þ5 ³п<6
¤п$Í4  new_weightsÁ\Ó4 ž5 Ð5 ü…K? ŒK Ë$¨©©©¨ÍìÿÛ ¦K ÛÿÛl©K íßÿÛÿÛT¹K ÿÛË$üËK$ §§¯2ª•1«ÖÍðÙûâZ±çË$ÿÛÍðÙûâZ±çª«¢K ttËK §§ Ë$¡
¡
ò€£
¤
ø3¥
±#ç¿àf0ÿÛdõK ,õK §§ü†Lr 8þ©­­þõÄ ‹L †Ål¾L –ÅTÎL ¿cÿÛ,ÛL ¿cÿÛÜ,òL ÀÛ®Àc®JLüÿL8 M ÿ ÿÀÛ  c cˆ¢cµ
 `£c ë `àB¤GS
‚ú¬ †M ¬
®8ÿÛ$‡M ± M üéNS 8©°°õÄ îN †Ål¡O –ÅT±O ÀÛ±Ù±#%¼ÃO ,ÆO ƒ ƒÀÛÀÛ¯ ÌO ¯
±8ÿÛ$ÍO üÜP„ 8©³³õÄ áP ´œöÿÛ ´ÿÛü—Q# †Ål½Q –ÅTÍQ ØÿÛ,ÚQ ÀÛµúMûM_aQ LçQ $ìQ ²²ÿÛüûQ( $þQ  ÀÛÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÀÛúM² ƒR ²
8ÿÛ$ˆR üôS< ©¸¸ùØ ùS ŠÙlüS é±TŒT ôÃ,™T ÅÚ¹¼¾)+ü¼Xi ü·T8 5 Returns the weight at the given index, if it exists.ÁôT úüüT; 8 If the index is out of bounds, this will return `None`.Á¼U úlÄU ƒšÖU ú<ÞU ¨ÆüêU- * use rand::distr::weighted::WeightedIndex;ÁœV úä¤V  let weights = [0, 1, 2];ÁüÅV5 2 let dist = WeightedIndex::new(&weights).unwrap();ÁüÿV( % assert_eq!(dist.weight(0), Some(0));Áü¬W( % assert_eq!(dist.weight(1), Some(1));ÁüÙW( % assert_eq!(dist.weight(2), Some(2));Áü†X% " assert_eq!(dist.weight(3), None);Á<°X ¨Æ4ÃX  ÅÚÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙп· ÊX ·ºœöп ºпüY#
¹п$ËX Ö,ÑX …Y œ¸Y üµak ü´\X U Returns a lazy-loading iterator containing the current weights of this distribution.Á] úü™]V S If this distribution has not been updated since its creation, this will return theÁüô]) & same weights as were passed to `new`.Á¢^ úlª^ ƒš¼^ ú<Ä^ ¨ÆüÐ^- ÃÏ‚_ úäŠ_  let weights = [1, 2, 3];Áü«_9 6 let mut dist = WeightedIndex::new(&weights).unwrap();Áüé_B ? assert_eq!(dist.weights().collect::<Vec<_>>(), vec![1, 2, 3]);Áü°`- * dist.update_weights(&[(0, &2)]).unwrap();Áüâ`B ? assert_eq!(dist.weights().collect::<Vec<_>>(), vec![2, 2, 3]);Á<©a ¨Æ<¼a  ÅÚ§§¯2ª•1«ÖÍðÙûâZ±çп· Äa ·½œöп ½пüüa#
¼п$Åa €b üÍc üc8 5 Returns the sum of all weights in this distribution.ÁdÔc ˆ ˆÅÚп· ác ·
¾п$âc üšdY ©ÀÀùØ Ÿd ŠÙlØd é±Tèd ÅÚÁ#Á"$üúd7 4ýd Š ÅÚ Šý«¿£Â •e ¿޹ „e Ÿ¬‡e
Áпý«$–e °6œe (*†g ÁÎ…Ãç…Ã…†ÃÃÁÃпý« п пìù¼Ø´™ Bounds on a weightÁ°úü´# See usage in [`WeightedIndex`].ÁÅÅë“üØÈØó“Åë“*õàë“6õàÇÆÇÇ„’¼ö Representation of 0Á$˜ÅÅó“üá =¤© Checked additionÁÂúüÊ85 - `Result::Ok`: On success, `v` is added to `self`Áü‡HE - `Result::Err`: Returns an error when `Self` cannot represent theÁüÔKH result of `self + v` (i.e. overflow). The value of `self` should beÁ”¤  discarded.Á”ä Œ ó“ Œó“Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Å ÷ Å
Çó“Á
ä¢

 ¿
 Â Å
 Ë
, Æ
8¿ Ç
& È
8´É
*Í
 Ð
 Ù
8
8³4
8
æ
, ê
8¿ ë
 í
 Ó
8
8Á4$ & 8$‡  Œ 7ˆ Ž % 8  8Í4”   ²  Æ  ³ 8´ 8 $ ¼ 8Á ¾ & ¿  Á 8 (È 8Í  Ñ  Ò  Ó $ Ô  Ö  ×  Ø  Ú  É
8 8  ö 8•œ   
ƒ 8Á   »
 8Û$  ¡  ¥ 8sumÁ¢ *§  ª 

Ä 8  Ê 8àèÌ % Ï 8«é  ë  î  ì  í 8©
*Ÿ
8¢
 ¥
 ¨
 ¦
 §
$ ©
% Ú
 à
 ó
 , á
8¿ â
& ã
8´ä
$ æ
, è
 é
 ð
, ê
8¯ë
& í
8´î
$ ñ

ò
*õ
 ø
 À8ç4|‚   , 8¿ % 8ç4 ¯ ° ¹, ± ² , ³8¯´$ ·
¸% ºô©Œ¶ È  Î Ô, Ï8¿ Ð& Ñ8´Ò*Ö Ù ÿ88³48
ï, ó8¿ ô ö ù8,„8Á4& Ž8$ 7µ¯% š8 ©8Í4”¬ ¾ Ò ¿8À8$ È8Á Ê& Ë Í8(Ô8Í Ý Þ ß$ à â ã ä æ ï
¿8Å
È8Á É% Ê8«Ü Þ á ß à% üÕ »À¼½»ÝÜú»ÝÌÅcÌüœ4ŸŽ »Ý Ž c cˆ¢cµ
 `£c ë `àB¤GS
‚úË £Ë
̱ ª|Š"CºüÚ" Uº”„#‰º‰º\»#›º›º¿º¿º\è#ãºãº»»´¨$+»TÖ$=»|Éüä+ ( Convenience re-export of common membersÁ úü”L I Like the standard library's prelude, this module simplifies importing ofÁüáO L common items. Unlike the standard prelude, the contents of this module mustÁ̱  be imported manually:ÁË ú ¨ÆÌ× àÇüñ5 2 # let mut r = StdRng::from_rng(&mut rand::rng());Áô§  # let _: f32 = r.random();Á ¨Æ² !ÞÒ¡Œ4— ÛßõŒ çàŒïG„— æâÿëEl© Ìã‰Dt¸ ³äüðH\È òå„ ç÷6ƒ øèžÂ |éµÂ\‘ ¬ê Ôé óœŠ ã´Ø ÒTŠ Âݲž ŒŽ,ð }lnY[HJ<ÚÞøšœá/\Ç
ëí‹-lÔ
󑔯
ëð²
!ëñÒÕ|‹
ï
ëòÕð
ëò•º
´­ë󕺵­ëóíÁ
ëëõž
‰fëöžÂ
|ë÷¬¯
îðÝßdè
Ð,ï
ÂÄ®°œ¡

dfSU”Ò
E´È
üç!
 User-level interface for RNGsÁ
úüK
H [`RngCore`] is the `dyn`-safe implementation-level interface for RandomÁüÙN
K (Number) Generators. This trait, `Rng`, provides a user-level interface on矬?
< RNGs. It is implemented automatically for any `R: RngCore`.Áè
úüìI
F This trait must usually be brought into scope via `use rand::Rng;` orÁä¶
 `use rand::prelude::*;`.ÁÓ
úœ×
 # Generic usageÁë
úüïE
B The basic pattern is `fn foo<R: Rng + ?Sized>(rng: &mut R)`. SomeÁüµ!
 things are worth noting here:Á×
úüÛL
I - Since `Rng: RngCore` and every `RngCore` implements `Rng`, it makes no矬 9
6 difference whether we use `R: Rng` or `R: RngCore`.Áüâ J
G - The `+ ?Sized` un-bounding allows functions to be called directly onÁü­
P
M type-erased references; i.e. `foo(r)` where `r: &mut dyn RngCore`. WithoutÁüþ
8
5 this it would be necessary to write `foo(&mut r)`.Á·
úü» O
L An alternative pattern is possible: `fn foo<R: Rng>(rng: R)`. This has someÁü‹ O
L trade-offs. It allows the argument to be consumed directly without a `&mut`ÁüÛ N
K (which is how `from_rng(rand::rng())` works); also it still works directly矻
N
K on references (including type-erased references). Unfortunately within theÁüù
L
I function `foo` it is not known whether `rng` is a reference type or not,矮J
G hence many uses of `rng` require an extra reference, either explicitlyÁü‘O
L (`distr.sample(&mut rng)`) or implicitly (`rng.random()`); one may hope theÁüá4
1 optimiser can remove redundant references later.Á
ú
Example:Á§
ú
¨Æ”³
á€Æ
úüÊ1
. fn foo<R: Rng + ?Sized>(rng: &mut R) -> f32 {Á¤ü
 rng.random()Á,
‡ 
úü›$
! # let v = foo(&mut rand::rng());Á
¨ÆÒ
øøë“üȸF
|ó“<×
øë“)Ý‹ë“5Ý‹ûýˆŠŒùûýˆŠŒ ˆŒŠûýùüêP
üåC
@ Return a random value via the [`StandardUniform`] distribution.Á­
ú
ƒšÇ
ú
¨Æ”Û
á€ò
úôú
©Èô
 let x: u32 = rng.random();Á´À
 println!("{}", x);ÁüÛ2
/ println!("{:?}", rng.random::<(f64, bool)>());Á<
¨Æž
ú¼¦
 # Arrays and tuplesÁÂ
úüÊ8
5 The `rng.random()` method is able to generate arraysÁü‡G
D and tuples (up to 12 elements), so long as all element types can beÁ
generated.Áæ
úüîI
F For arrays of integers, especially for those with small element typesÁü¼F
C (< 64 bit), it will likely be faster to instead use [`Rng::fill`],Áü‡2
/ though note that generated values will differ.Á¾
ú
¨Æ”Ò
á€é
úôñ
©Èü”I
F let tuple: (u8, i32, char) = rng.random(); // arbitrary tuple supportÁâ
úüêD
A let arr1: [f32; 32] = rng.random(); // array constructionÁô³
 let mut arr2 = [0u8; 128];ÁüÖ9
6 rng.fill(&mut arr2); // array fillÁ<”
¨Æ 
úü¨/
, [`StandardUniform`]: distr::StandardUniformÁ4í
 ó“§«ø¥úú ÷
øÿ“ ô
!Ì®§«
ùó“§«
+-ü¯ ‰
üñ=
: Return an iterator over [`random`](Self::random) variatesÁ³
úü»<
9 This is a just a wrapper over [`Rng::sample_iter`] usingÁüü
 [`distr::StandardUniform`].Á 
úü¨0
- Note: this method consumes its argument. UseÁüÝ:
7 `(&mut rng).random_iter()` to avoid consuming the RNG.Áœ
ú
ƒš
ú
¨ÆüÊ1
. use rand::{rngs::SmallRng, Rng, SeedableRng};Á
úüˆ)
& let rng = SmallRng::seed_from_u64(0);Áü¶:
7 let v: Vec<i32> = rng.random_iter().take(5).collect();ÁÜõ
 assert_eq!(v.len(), 5);Á<•
¨Æ
ó“··ÛT»Ø¼°6½UKÍ”
|‰Ô̮󓧫ø¥üüøÿ“ ¾
¿¢,ˆ!
Œ—|¨!
ûó“§«
(*ü›*n
üô!/
, Generate a random value in the given range.Á¨"
úü°"H
E This function is optimised for the case that only a single sample isÁüý"D
A made from the given range. See also the [`Uniform`] distribution矮#H
E type which may be faster if sampling from the same range repeatedly.Á“$
úü›$J
G All types support `low..high_exclusive` and `low..=high` range syntax.Áüê$P
M Unsigned integer types also support `..high_exclusive` and `..=high` syntax.Á¿%
údÇ%
# PanicsÁØ%
úüà%J
G Panics if the range is empty, or if `high - low` overflows for floats.Á¯&
úl·&
ƒšÉ&
ú<Ñ&
¨Æ”Ý&
á€ô&
úôü&
©È
8$Ôh
 Øh
8
as_mut_ptrÁTÙh
 ãh
äh
8†i
‰i
8Ši
8ÈŽi
$ i
8$²i
% „j
8
šj
8Ã žj
8 j
8$£j
 ¨j
æj

Âj
8Ã Ãj
Åj
8Ã Çj
 Èj
8to_leÁ,Éj
 Îj
Ïj
% Ðj
8$k
8 9$ k
8
¥k
 ©k
¶k
8•ºDªk
 ²k
, ³k
8¿ ´k
 µk
 ¸k
ös
 8 Æk
8®8$Ék
 Ík
8£ Îk
& Ïk
8÷6Ñk
Õk
- ×k
8Ø,Øk
 Ýk
 Þk
õk
  ßk
8àk
8$äk
$ èk
8°6êk
& ík
 ïk
8ðk
8£ ôk
 ÷k
ìs
8‰l
8$Œl
 l
8l
 ”l
•l
 —l
7ˆ ™l
 l
Þs
8±l
8$µl
ºl
8$¼l
 Àl
8Ál
 Äl
Ål

Çl
8íÉl
'Ìl
8š<Îl
'Õl
 ×l
, Øl
8¿ Ùl
 Úl
 Ûl
Ül
% Ýl
8°6ól
 öl
8÷;T÷l
 m
Ýr
8"4ïp
 öp
Çr
8ž,”q
'™q
8úä”›q
 ­q
­r

8$®q
 ²q
8µåT³q
 ½q
¾q
8àq
ãq
8äq
8Èèq
$ êq
8$Œr
% Þr
8
ôr
8Ã ør
8úr
8$ýr
 s
Ìs

œs
8Ã s
Ÿs
8•ºD¡s
 ©s
µs
8Ã ªs
 «s
7ˆ ¬s
 ­s
8÷æ,®s
 ³s
´s
% ¶s
% þs
 „t
—t
, …t
8¿ †t
& ‡t
8´ˆt
$ Št
, Œt
 t
•t
, Žt
8¯t
& t
8´t
$ ”t

t
*™t
 œt
Èu
 t
Çu
8÷9L§t
 °t
 ±t
´t
, ²t
8¿ ³t
% µt
8÷9L­u
 ¶u
 ·u
Àu