Buckets:
| import math | |
| import random | |
| def sample_positive_normal( | |
| rng: random.Random, | |
| mean: float, | |
| sd: float, | |
| minimum: int, | |
| maximum: int, | |
| ) -> int: | |
| if maximum < minimum: | |
| raise ValueError('maximum is smaller than minimum') | |
| if sd <= 0: | |
| return min(max(round(mean), minimum), maximum) | |
| for _ in range(100): | |
| value = round(rng.gauss(mean, sd)) | |
| if minimum <= value <= maximum: | |
| return value | |
| return min(max(round(mean), minimum), maximum) | |
| def weighted_index(rng: random.Random, weights: list[float]) -> int: | |
| total = sum(weights) | |
| if total <= 0: | |
| raise ValueError('weights must sum to a positive number') | |
| target = rng.random() * total | |
| cumulative = 0.0 | |
| for index, weight in enumerate(weights): | |
| cumulative += weight | |
| if cumulative >= target: | |
| return index | |
| return len(weights) - 1 | |
| def zipf_weights(size: int, exponent: float = 1.1) -> list[float]: | |
| return [1.0 / math.pow(rank, exponent) for rank in range(1, size + 1)] | |
| def random_dna(rng: random.Random, length: int) -> str: | |
| return ''.join(rng.choice('ACGT') for _ in range(length)) | |
Xet Storage Details
- Size:
- 1.16 kB
- Xet hash:
- bfe03a900af978395bce29f0da8843a1e812a7388db3f76c5dc9972c41e26ed3
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.