增加去除每天第一个盲盒,以及增加模拟投盲盒
parent
2b4bb35171
commit
43f3055e27
@ -0,0 +1,54 @@
|
|||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
from blindbox_analysis import blindbox_config, print_tree, profit_statistic
|
||||||
|
|
||||||
|
def generate_random_data(blindbox_name: str, num_records: int):
|
||||||
|
"""
|
||||||
|
生成随机盲盒数据
|
||||||
|
"""
|
||||||
|
np.random.seed(42) # 固定随机种子,确保结果可复现
|
||||||
|
|
||||||
|
dataset = []
|
||||||
|
for i in range(num_records):
|
||||||
|
# 随机生成用户ID和用户名
|
||||||
|
uid = np.random.randint(1000, 2000)
|
||||||
|
username = f'user_{uid}'
|
||||||
|
|
||||||
|
blindbox_info = blindbox_config[blindbox_name]
|
||||||
|
|
||||||
|
# 抽选盲盒物品
|
||||||
|
rand_num = np.random.rand()
|
||||||
|
sum_prob = 0
|
||||||
|
selected_item = None
|
||||||
|
for item, item_info in blindbox_info['items'].items():
|
||||||
|
prob = item_info['probability'] / 100
|
||||||
|
if rand_num > sum_prob and rand_num <= sum_prob + prob:
|
||||||
|
selected_item = (item, item_info)
|
||||||
|
break
|
||||||
|
sum_prob += prob
|
||||||
|
|
||||||
|
if selected_item is None:
|
||||||
|
raise ValueError("未能选中任何物品")
|
||||||
|
|
||||||
|
# 构建随机数据记录
|
||||||
|
dataset.append({
|
||||||
|
'uid': uid,
|
||||||
|
'username': username,
|
||||||
|
'blindbox_name': blindbox_name,
|
||||||
|
'blindbox_price': blindbox_info['price'],
|
||||||
|
'item_name': selected_item[0],
|
||||||
|
'item_price': selected_item[1]['price'],
|
||||||
|
'profit': selected_item[1]['price'] - blindbox_info['price'],
|
||||||
|
'time': pd.Timestamp.now()
|
||||||
|
})
|
||||||
|
|
||||||
|
return pd.DataFrame(dataset)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# 生成随机数据
|
||||||
|
stats = {}
|
||||||
|
for box_name in blindbox_config.keys():
|
||||||
|
df = generate_random_data(box_name, 10000)
|
||||||
|
stats[box_name] = profit_statistic(df)
|
||||||
|
|
||||||
|
print_tree(stats)
|
||||||
Loading…
Reference in New Issue