Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - BW Swift
Added 06 Jan 2025

BW Swift

@bwswift
Number of subscribers: 1 742
Photos: 1,710
Videos: 176
Links: 1,590
Description:
Канал створений для навчання програмування на swift та розробці програм під iOS. Мета проекту - допомогти студентам пройти шлях від розробника-початківця до оплачуваного фахівця. Тут я публікую актуальні та цікаві статті щодо iOS розробки. Адмін: @bws2007
Source

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

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