§
    Ÿ²Åjé  ã                  óR  — d Z ddlmZ ddlZddlmZ ddlmZ ddlZddl	m
Z
mZ ddlmZmZmZ g d	¢Zd
„ Zd„ Zedd„¦   «         Zedd„¦   «         Zd„ ZeZeZedd„¦   «         Zed„ ¦   «         Zedd„¦   «         Zed„ ¦   «         Zedd„¦   «         Zeedd d„¦   «         ¦   «         ZdS )!z§Wrapper to mimic (parts of) np.random API surface.

NumPy has strict guarantees on reproducibility etc; here we don't give any.

Q: default dtype is float64 in numpy

é    )ÚannotationsN)Úsqrt)ÚOptionalé   )Ú_dtypes_implÚ_util)Úarray_or_scalarÚ	ArrayLikeÚ
normalizer)ÚseedÚrandom_sampleÚsampleÚrandomÚrandÚrandnÚnormalÚchoiceÚrandintÚshuffleÚuniformc                 ó"   — dd l mc m}  | j        S )Nr   )Útorch._dynamo.configÚ_dynamoÚconfigÚuse_numpy_random_stream)r   s    úDC:\Projects\Historical\venv\Lib\site-packages\torch/_numpy/random.pyÚuse_numpy_randomr   %   s&   € à)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)àÔ)Ð)ó    c                óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )Nc                 óh  •‡— t          ¦   «         s ‰| i |¤ŽS dd l}ddlmŠ t	          |j        ‰j        ¦  «        }t          ˆfd„| D ¦   «         ¦  «        } ˆfd„|                     ¦   «         D ¦   «         } || i |¤Ž}t          ||j        ¦  «        r ‰t          j        |¦  «        ¦  «        }|S )Nr   r   ©Úndarrayc              3  ón   •K  — | ]/}t          |‰¦  «        r|j                             ¦   «         n|V — Œ0d S ©N©Ú
isinstanceÚtensorÚnumpy)Ú.0Úargr"   s     €r   ú	<genexpr>z-deco_stream.<locals>.inner.<locals>.<genexpr>9   sV   øè è € ð ð ØLO¥j°°gÑ&>Ô&>ÐG�”
× Ò Ñ"Ô"Ð"ÀCðð ð ð ð ð r   c                ón   •— i | ]1\  }}|t          |‰¦  «        r|j                             ¦   «         n|“Œ2S © r%   )r)   ÚkeyÚvalr"   s      €r   ú
<dictcomp>z.deco_stream.<locals>.inner.<locals>.<dictcomp><   sQ   ø€ ð ð ð á�C˜ð ­:°c¸7Ñ+CÔ+CÐL�S”Z×%Ò%Ñ'Ô'Ð'Èðð ð r   )r   r(   Ú_ndarrayr"   Úgetattrr   Ú__name__ÚtupleÚitemsr&   ÚtorchÚ	as_tensor)ÚargsÚkwdsr(   ÚfÚvaluer"   Úfuncs        @€r   Úinnerzdeco_stream.<locals>.inner-   s  øø€ åÑ!Ô!ð 	Ø�4˜Ð& Ð&Ð&Ð&àˆLˆLˆLà)Ð)Ð)Ð)Ð)Ð)å˜œ d¤mÑ4Ô4ˆAõ ð ð ð ð ØSWðñ ô ñ ô ˆDðð ð ð à $§
¢
¡¤ðñ ô ˆDð
 �A�tÐ$˜tÐ$Ð$ˆEõ ˜% ¤Ñ/Ô/ð 8Ø˜¥¤°Ñ 6Ô 6Ñ7Ô7�àˆLr   )Ú	functoolsÚwraps)r<   r=   s   ` r   Údeco_streamr@   ,   s8   ø€ Ý„_�TÑÔðð ð ð ñ Ôðð6 €Lr   c                óL   — | �!t           j                             | ¦  «         d S d S r$   )r6   r   Úmanual_seed)r   s    r   r   r   L   s,   € àÐÝŒ× Ò  Ñ&Ô&Ð&Ð&Ð&ð Ðr   c                ó´   — | €d} t          j        ¦   «         j        }t          j        | |¬¦  «                             ¦   «         }t          || dk    ¬¦  «        S ©Nr-   ©Údtype©Úreturn_scalar©r   Údefault_dtypesÚfloat_dtyper6   ÚemptyÚuniform_r	   ©ÚsizerF   Úvaluess      r   r   r   R   sT   € à€|ØˆÝÔ'Ñ)Ô)Ô5€EÝŒ[˜ UÐ+Ñ+Ô+×4Ò4Ñ6Ô6€FÝ˜6°¸²Ð<Ñ<Ô<Ð<r   c                 ó0   — | dk    rd } t          | ¦  «        S )Nr-   )r   ©rO   s    r   r   r   [   s   € Øˆr‚z€zØˆÝ˜ÑÔÐr   ç        ç      ð?c                ó¸   — |€d}t          j        ¦   «         j        }t          j        ||¬¦  «                             | |¦  «        }t          ||dk    ¬¦  «        S rD   rI   )ÚlowÚhighrO   rF   rP   s        r   r   r   e   sX   € à€|ØˆÝÔ'Ñ)Ô)Ô5€EÝŒ[˜ UÐ+Ñ+Ô+×4Ò4°S¸$Ñ?Ô?€FÝ˜6°¸²Ð<Ñ<Ô<Ð<r   c                 óˆ   — t          j        ¦   «         j        }t          j        | |¬¦  «        }t          || dk    ¬¦  «        S )NrE   r-   rG   )r   rJ   rK   r6   r   r	   rN   s      r   r   r   n   s>   € åÔ'Ñ)Ô)Ô5€EÝŒ[˜ UÐ+Ñ+Ô+€FÝ˜6°¸²Ð<Ñ<Ô<Ð<r   c                ó¸   — |€d}t          j        ¦   «         j        }t          j        ||¬¦  «                             | |¦  «        }t          ||dk    ¬¦  «        S rD   )r   rJ   rK   r6   rL   Únormal_r	   )ÚlocÚscalerO   rF   rP   s        r   r   r   u   sX   € à€|ØˆÝÔ'Ñ)Ô)Ô5€EÝŒ[˜ UÐ+Ñ+Ô+×3Ò3°C¸Ñ?Ô?€FÝ˜6°¸²Ð<Ñ<Ô<Ð<r   c                ó  — ddl m} t          | t          j        ¦  «        r| }n't          | |¦  «        r| j        }nt          d¦  «        ‚t          j        |j        d         ¦  «        }||         }| 	                    |¦  «         d S )Nr   r!   z'We do not random.shuffle lists in-placer   )
r1   r"   r&   r6   ÚTensorr'   ÚNotImplementedErrorÚrandpermÚshapeÚcopy_)Úxr"   r'   ÚpermÚxps        r   r   r   ~   s“   € ð "Ð!Ð!Ð!Ð!Ð!å�!•U”\Ñ"Ô"ð MØˆˆÝ	�A�wÑ	Ô	ð MØ”ˆˆå!Ð"KÑLÔLÐLåŒ>˜&œ, qœ/Ñ*Ô*€DØ	�Œ€BØ
‡L‚L�ÑÔÐÐÐr   c                ó¸   — |€d}t          |t          t          f¦  «        s|f}|€d| }} t          j        | ||¬¦  «        }t          |t          |dk    ¬¦  «        S )Nr-   r   rR   rG   )r&   r4   Úlistr6   r   r	   Úint)rV   rW   rO   rP   s       r   r   r   �   sf   € à€|ØˆÝ�d�U¥D˜MÑ*Ô*ð ØˆwˆØ€|Ø�sˆTˆÝŒ]˜3 ¨4Ð0Ñ0Ô0€FÝ˜6¥3°d¸b²jÐAÑAÔAÐAr   TÚar
   ÚpúOptional[ArrayLike]c                óJ  — |                       ¦   «         dk    rt          j        | ¦  «        } |€d}n#t          j        |¦  «        rd}|D ]}||z  }Œn|}|€"t          j        | ¦  «        | j        d         z  }t          t          j        |j	        ¦  «        j
        ¦  «        }t          |                     ¦   «         dz
  ¦  «        |k    rt          d¦  «        ‚t          j        |||¬¦  «        }t          j        |¦  «        r|                     |¦  «        }| |         }|S )Nr   r   rT   zprobabilities do not sum to 1.)Úreplacement)Únumelr6   Úaranger   Úis_sequenceÚ	ones_likera   r   ÚfinforF   ÚepsÚabsÚsumÚ
ValueErrorÚmultinomialÚreshape)	ri   rO   Úreplacerj   Únum_elÚelÚatolÚindicesÚsampless	            r   r   r   ›   s&  € ð 	‡w‚w�y„y�A‚~€~ÝŒL˜‰OŒOˆð
 €|ØˆˆÝ	Ô	˜4Ñ	 Ô	 ð ØˆØð 	ð 	ˆBØ�b‰LˆFˆFð	ð ˆð 	€yÝŒO˜AÑÔ ¤¨¤Ñ+ˆõ •”˜AœGÑ$Ô$Ô(Ñ)Ô)€DÝ
ˆ1�5Š5‰7Œ7�S‰=ÑÔ˜DÒ Ð ÝÐ9Ñ:Ô:Ð:õ Ô  6°wÐ?Ñ?Ô?€GåÔ˜ÑÔð (Ø—/’/ $Ñ'Ô'ˆà�Œj€Gà€Nr   r$   )rS   rT   N)NN)NTN)ri   r
   rj   rk   )Ú__doc__Ú
__future__r   r>   Úmathr   Útypingr   r6   Ú r   r   Ú_normalizationsr	   r
   r   Ú__all__r   r@   r   r   r   r   r   r   r   r   r   r   r   r-   r   r   ú<module>r†      sð  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cðð ð €ð*ð *ð *ðð ð ð@ ð'ð 'ð 'ñ „ð'ð
 ð=ð =ð =ñ „ð=ðð ð ð 
€Ø	€ð ð=ð =ð =ñ „ð=ð ð=ð =ñ „ð=ð ð=ð =ð =ñ „ð=ð ðð ñ „ðð  ðBð Bð Bñ „ðBð Øð"ð "ð "ð "ñ „ñ „ð"ð "ð "r   