踹他GPT 之 弄个大乐透助手

11月7日凌晨的OpenAI第一次开发者大会,除了速度提升、服务使用费用的减少、开发者生态以外,最让我震撼的是,GPTS是ChatGPT的定制版本,是通过简单配置就可以完成一个使用ChatGPT、集成系统和数据服务的智能助手。比如OpenAI开发者体验主管演示的,当你想去一个城市旅游,那么旅游攻略、城市景点轨迹设计、航班登机、汇率计算等等都可以智能完成。感觉ChatGPT马上就会变成一个24x7完全智能的私人管家。

做点什么哪,一直很喜欢买彩票,要不让ChatGPT帮我推荐一下大乐透的号码吧。只是为了娱乐,提倡快乐彩票、理智购买。

第一步、我们使用ChatGPT-4来看看什么样的提示词可以得到我们想要的分析、推荐结果。ChatGPT是很有原则的,如果你直接让它预测彩票号码,它会非常委婉的拒绝。

踹他GPT 之 弄个大乐透助手_第1张图片

第二步、既然直接问不行,那就迂回一下,那我就把大乐透的号码球产生的过程描述一下吧,并且针对每个数字提出一个简单的概率问题。

Instruction: 你是数据分析大师,我将35个完全相同的小球放在一个容器中,小球上标记处1到35不重复的数字,容器有一个圆形小洞,我每次旋转容器让一个小球掉出,再旋转容器让另外一个小球掉出,直到一共掉出5个小球算是一组,我会记录每次掉出的小球的数字

次数 掉出小球上面的数字
1 8, 11, 19, 22, 29
2 4, 6, 7, 9, 24
...... .......
23 4, 5, 18, 20, 25

Prompt: 列出前10个出现概率最大的数字和概率值

上面斜体字就是我要使用的指令和提示词,在提交给ChatGPT的时候出现了几种情况。

  • 第一种情况,由于受到黑客攻击,ChatGPT的交互界面无法响应。可以到OpenAI官网来查看更新

踹他GPT 之 弄个大乐透助手_第2张图片

  • 第二种情况,ChatGPT的分析出现间断

踹他GPT 之 弄个大乐透助手_第3张图片

        当然它会提供解释和建议

踹他GPT 之 弄个大乐透助手_第4张图片

  • 第三种,也是最理想的情况就是系统可以完成分析工作,我们可以看到结果产生。如果你在ChatGPT进行分析时候点开"Analyzing"下拉菜单,你就可以看到ChatGPT使用的代码了,否则ChatGPT只会提供结论而不会提供代码。

踹他GPT 之 弄个大乐透助手_第5张图片

我把代码放在编译器中方便阅读

# Now we will input the complete data provided by the user to calculate the probabilities correctly.

# Data provided by the user
ball_drops_complete = [
    [8, 11, 19, 22, 29],
    [4, 6, 7, 9, 24],
    # ... all the way to ...
    [1, 5, 7, 12, 13]
]

# Calculate the total number of rounds
num_rounds = len(ball_drops_complete)

# Flatten the list of lists to get one big list of all the balls dropped
all_balls_dropped = [ball for round in ball_drops_complete for ball in round]

# Count the frequency of each ball number
ball_frequency = {ball: all_balls_dropped.count(ball) for ball in range(1, 36)}

# Calculate the probability for each ball number
# Since each round 5 balls are dropped, the total number of balls dropped is 5 times the number of rounds
total_balls_dropped = 5 * num_rounds
ball_probability = {ball: freq / total_balls_dropped for ball, freq in ball_frequency.items()}

# Sort the ball numbers by their probability and get the top 10
top_10_balls = sorted(ball_probability.items(), key=lambda item: item[1], reverse=True)[:10]

top_10_balls
 
  

除了代码,ChatGPT也生成了基于这个代码运行的结果

踹他GPT 之 弄个大乐透助手_第6张图片

很奇怪的一点是,10个出现次数最多的数字是不对的,几率也是不对的,一看就不像计算出来的,更像是随意生成的。如果我用自己的环境跑完的结果如下就是正确的。

踹他GPT 之 弄个大乐透助手_第7张图片

根据自己的经验,原因可能有几个

  1. ChatGPT最后的结果并不是用自己生成的代码生成出来的
  2. ChatGPT在跑数据的时候提示词中的数据信息有丢失

第三步、分析完单一数字的概率以后,我们来分析一下数字组合出现的概率

使用和第二步类似的指令,提示换成下面的内容

Prompt: 识别同时出现几率高的号码

ChatGPT给出了分析思路和代码,但是毫无意外,这个分析结果还是错的。

踹他GPT 之 弄个大乐透助手_第8张图片

from collections import defaultdict
import itertools

# 假设您的数据是这样的格式,每个列表代表一次抽取的5个数字
data = [
    [8, 11, 19, 22, 29],
    [4, 6, 7, 9, 24],
    [2, 18, 24, 25, 34],
    # ... 其他数据
    [1, 5, 7, 12, 13]
]

# 初始化一个字典来存储所有数字对及其出现次数
pair_counts = defaultdict(int)

# 遍历数据,对每组数字中的每对数字进行计数
for group in data:
    # itertools.combinations用于生成数字的所有可能组合(这里是两两组合)
    for pair in itertools.combinations(group, 2):
        pair_counts[pair] += 1

# 按出现次数对数字对进行降序排序
sorted_pairs = sorted(pair_counts.items(), key=lambda x: x[1], reverse=True)

# 获取出现次数最多的前10对数字
top_10_pairs = sorted_pairs[:10]

# 打印结果
for pair, count in top_10_pairs:
    print(f"数字对 {pair} 出现了 {count} 次")

使用个人环境跑出正确的结果。

踹他GPT 之 弄个大乐透助手_第9张图片

第四步、尝试将这部分逻辑添加到GPTs中

考虑到ChatGPT分析思路严谨、代码正确,但是分析结论是错误的,个人感觉数据分析类需求无法直接通过GPTs来配置完成。

如果需要代码和提示词请留言,欢迎多多拍砖

你可能感兴趣的:(GPT,gpt,人工智能,chatgpt)