玖叶教程网

前端编程开发入门

最优选择策略--如何做到最佳选择

本人研究的最优选择策略,通过下面程序运行结果,没问题。
import random,time
import numpy as np
import pandas as pd
def pl_play_choice(file_name):
    """ 人工玩游戏 """
    df = pd.read_csv(file_name).values[0]
    random.shuffle(df)
    # print(df)
    for j in range(len(df)):
        ch = input(f'第 {j+1} 次出的是:{df[j]},你要选吗?选输入1,不选输入0')
        if ch == '1':
            my_ch = df[j]
            break
        elif ch == '0':
            print('你没有选,我们继续...')
    df_st = sorted(df,reverse=True)
    print('f最大的6个数分别是:{df_st[:6]}')
    print(f'本次游戏中,你选的是{my_ch},系统是高是{df.max()},最低是{df.min()},平均是{df.mean()}')
def ct_play_choice(file_name):
    """ 计算机模拟自己的选择策略 """
    df = pd.read_csv(file_name).values[0]
    random.shuffle(df)
    max_p1_0 = max(df[:10])
    max_p2_tem = sorted(df[10:20],reverse=True)
    max_p2_0 = max_p2_tem[0]
    max_p2_1 = max_p2_tem[1]
    max_p3_0 = sorted(df[20:],reverse=True)[0]
    if max_p2_0 > max_p1_0: # 如果第二组(10--19中的最大数大于第一组的最大数
        choice_tem = max_p2_0
    else:
        if max_p3_0 > max_p2_1: # 如果第三组(20--29中的最大数大于第二组的次大数
            choice_tem = max_p3_0
        else:
            choice_tem = df[-1] # 将最后一个选择
    print(f'电脑选的是 -- {choice_tem}')
    play_choice.append(choice_tem)
    print('原数据从大到小排序前6个数:',sorted(df,reverse=True)[:6])

def make_data():
    """ 创建原始数据,30个数 """
    beg = random.randint(1,10000)
    end_ = random.randint(1,10000)
    if beg > end_:
        beg,end_ = end_,beg
    elif beg == end_:
        end_ += beg * 2
    base_lst = np.random.randint(beg,end_,[1,30])
    df = pd.DataFrame(data=base_lst,columns=[ 'col{}'.format(i) for i in range(1,31)])
    # print(df)
    df.to_csv('0602列表数据.csv',index=False,encoding='UTF-8')
    return base_lst # 返回值用于找出最大的6个数

base_lst = make_data() # 创建数据,返回数据
# print(base_lst)
first_6 = sorted(base_lst[0],reverse=True)[:30] # 存入大到小前6个数
# print(first_6)
play_choice = [] # 存放计算机模拟选择的数据
file_name = '0602列表数据.csv'

n = int(input('你想模拟多少次?'))
for i in range(n):
    ct_play_choice(file_name)
play_choice.sort(reverse=True)
print(play_choice)
# 统计最大6个数,各出现多少次
for k in range(30):
    print(f'第{k+1}大的数是{first_6[k]},共选择了{play_choice.count(first_6[k])}次,占{play_choice.count(first_6[k])/n*100}%。')



发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言