Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import torch | |
| TORCH_RNG_MAX = 0xFFFF_FFFF_FFFF_FFFF | |
| TORCH_RNG_MIN = -0x8000_0000_0000_0000 | |
| NP_RNG_MAX = np.iinfo(np.uint32).max | |
| NP_RNG_MIN = 0 | |
| def torch_rng(seed: int): | |
| torch.manual_seed(seed) | |
| random_float = torch.empty(1).uniform_().item() | |
| torch_rn = int(random_float * (TORCH_RNG_MAX - TORCH_RNG_MIN) + TORCH_RNG_MIN) | |
| np_rn = int(random_float * (NP_RNG_MAX - NP_RNG_MIN) + NP_RNG_MIN) | |
| return torch_rn, np_rn | |
| def convert_np_to_torch(np_rn: int): | |
| random_float = (np_rn - NP_RNG_MIN) / (NP_RNG_MAX - NP_RNG_MIN) | |
| torch_rn = int(random_float * (TORCH_RNG_MAX - TORCH_RNG_MIN) + TORCH_RNG_MIN) | |
| return torch_rn | |
| def np_rng(): | |
| return int(np.random.randint(NP_RNG_MIN, NP_RNG_MAX, dtype=np.uint32)) | |
| if __name__ == "__main__": | |
| import random | |
| print(TORCH_RNG_MIN, TORCH_RNG_MAX) | |
| s1 = np_rng() | |
| s2 = torch_rng(s1) | |
| print(f"s1 {s1} => s2: {s2}") | |