import random
import matplotlib.pyplot as plt
# Setup: 3 Iklan (Mesin Slot), dengan konversi rate JAWABAN (User tdk tau ini)
conversion_rates = [0.10, 0.50, 0.15] # Iklan ke-2 jelas paling bagus
N = 1000 # Jumlah user
d = len(conversion_rates) # Jumlah Iklan
# Inisialisasi
ads_selected = []
numbers_of_rewards_1 = [0] * d # Alpha (Menang)
numbers_of_rewards_0 = [0] * d # Beta (Kalah)
total_reward = 0
for n in range(N):
ad = 0
max_random = 0
# --- THOMPSON SAMPLING STEP ---
for i in range(d):
# Ambil sampel acak dari distribusi Beta saat ini
random_beta = random.betavariate(numbers_of_rewards_1[i] + 1,
numbers_of_rewards_0[i] + 1)
if random_beta > max_random:
max_random = random_beta
ad = i
# Mainkan Iklan terpilih (Simulasi Dunia Nyata)
ads_selected.append(ad)
reward = 1 if random.random() < conversion_rates[ad] else 0
# Update Pengetahuan Kita
if reward == 1:
numbers_of_rewards_1[ad] += 1
else:
numbers_of_rewards_0[ad] += 1
total_reward += reward
print("Jumlah Iklan Dipilih:", numbers_of_rewards_1)
# Iklan ke-2 pasti yang paling sering dipilih (otomatis konvergen)