Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - BW Swift
Додано 06 січ 2025

BW Swift

@bwswift
Кількість підписників: 1 747
Фото: 1,710
Відео: 176
Посилання: 1,590
Опис:
Канал створений для навчання програмування на swift та розробці програм під iOS. Мета проекту - допомогти студентам пройти шлях від розробника-початківця до оплачуваного фахівця. Тут я публікую актуальні та цікаві статті щодо iOS розробки. Адмін: @bws2007
Джерело

BW Swift | Реалізація зваженого рандому на Swift!В Swift рандомний вибір з колекц...

Логотип телеграм спільноти - BW Swift BW Swift @bwswift
791 Охват/переглядів 2025-07-28 16:37 Повідомлення №1920
Реалізація зваженого рандому на Swift!В Swift рандомний вибір з колекції простий - викликаєш arr.random і погнали. Але що робити, якщо є потреба надати перевагу деяким елементам над іншими? Уявіть, у вас є масив [A, B, C], і ви хочете вплинути на вирогідність рандомного вибору певного елементу. Наприлад, 20% для A, 50% для B, і 30% для C. Стандартний рандом не враховує ваги. Тому я вирішив написати функцію, яка може. Надихнув подібний функціонал у Python. >>>> От тут можна подивитися на слайди. Функція randomElement(with probs:) приймає масив коефіцієнтів ймовірностей. Послідовність елементів має відповідати послідовності оригінального масиву. Функція використовує кумулятивні вирогідності та мапить надані ваги у вихідні, що безпосередньо враховуються при рандомізації. Якщо просто, кумулятивність полягає у тому, що кожен елемент в масиві представляє суму всіх попередніх вирогідностей + поточна. Коли кумулятивний ряд зібраний, генеруємо "справжній рандом" від 0 до 1. Результатом буде перший елемент, кумулятивна вага якого перевищує "справжньо рандомізоване" значення. Ця функція чодово підійде для: - Зважених рекомендацій - показати певні продукти з більшою вирогідністю ніж інші. - Ігрові механіки- Динамічний UI Ну і ця функція (для мене) є важливим доповненям до попереднього посту (власні вектори), у контексті більш складної задачі =) ------------------------------Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)