Алгоритмы: различия между версиями
Перейти к навигации
Перейти к поиску
Artem (обсуждение | вклад) |
Artem (обсуждение | вклад) |
||
Строка 49: | Строка 49: | ||
return False | return False | ||
</pre> | |||
= np_random_choice = | |||
<pre> | |||
import random | |||
def np_random_choice(size, probes): | |||
cumsum = [sum(probes[:i+1]) for i, p in enumerate(probes)] | |||
result = [] | |||
for probe in range(size): | |||
rnd = random.random() | |||
print(rnd) | |||
i = -1 | |||
while rnd > 0: | |||
i += 1 | |||
rnd = rnd - cumsum[i] | |||
result.append(i) | |||
return result | |||
</pre> | </pre> |
Версия от 17:10, 19 ноября 2024
НОД и НОК
// fast! func gcd(a uint, b uint) uint { for a != 0 && b != 0 { if a > b { a = a % b } else { b = b % a } } return a + b } func gcd2(a uint, b uint) uint { for a != b { if a > b { a = a - b } else { b = b - a } } return a + b } func lcm(a uint, b uint) uint { return (a * b) / gcd(a, b) }
Bin Search
def search(arr, value): if not arr: return False left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == value: return True elif arr[mid] < value: left = mid + 1 else: right = mid - 1 return False
np_random_choice
import random def np_random_choice(size, probes): cumsum = [sum(probes[:i+1]) for i, p in enumerate(probes)] result = [] for probe in range(size): rnd = random.random() print(rnd) i = -1 while rnd > 0: i += 1 rnd = rnd - cumsum[i] result.append(i) return result