先做个广告:如需代注册ChatGPT或充值 GPT4.0会员(plus),请添加站长微信:gptchongzhi
本期目标是练习 提示词技巧
1、概率的直觉和验证;
推荐使用GPT中文版,国内可直接访问:https://ai.gpt86.top
2、Python模拟概率的示范;
3、Python高级函数的用法;
第一道 指尖陀螺
Python做的Spinner很酷!
提示词:似指尖陀螺的东东。 停下来后指向偶数的概率是 3/6,停在素数的概率是 3/6,请问停在偶数同时是素数的概率是多少?python模拟任意陀螺
挑战python编程模拟解决?
import random
def simulate_spinner(spins):
numbers = [1, 2, 3, 4, 5, 6]
even_prime_count = 0
for _ in range(spins):
result = random.choice(numbers)
if result == 2: # 2 是唯一的偶数且是素数
even_prime_count += 1
probability = even_prime_count / spins
return probability
# 模拟 100,000 次
spins = 100000
probability = simulate_spinner(spins)
print(f"停在偶数且是素数的概率: {probability:.4f}")
解释代码
def simulate_spinner(spins):
numbers = [1, 2, 3, 4, 5, 6]
even_prime_count = 0
for _ in range(spins):
result = random.choice(numbers)
if result == 2: # 2 是唯一的偶数且是素数
even_prime_count += 1
probability = even_prime_count / spins
return probability
模拟 100,000
次:
spins = 100000
probability = simulate_spinner(spins)
print(f"停在偶数且是素数的概率: {probability:.4f}")
概率理论上是 1/6,因为在 1 到 6 的范围内,唯一的偶数且是素数的数字是 2。
× 显然AI答案不对!
题目正确的答案是 1/3 × 1/3 = 1/9 ✓
第二道
Mark 我改动以下这道题,与上期的课程有关,考察你理解概率情况。
不使用 Python 的高级函数
d1
和 d2
分别是第一个和第二个骰子的结果,取值范围为 1 到 6。以下是不使用高级函数的 Python 代码示例:
# 生成所有可能的结果
all_outcomes = []
for d1 in range(1, 7):
for d2 in range(1, 7):
all_outcomes.append((d1, d2))
# 计算事件 A 包含的情况数
def count_event_A(outcomes):
count = 0
for outcome in outcomes:
# 这里我们假设事件 A 是两个骰子的和是 3 的倍数
if (outcome[0] + outcome[1]) % 3 == 0:
count += 1
return count
# 计算事件 A 的情况数
event_A_count = count_event_A(all_outcomes)
print(f"事件 A 包含的情况数: {event_A_count}")
需要理解两个公平的骰子掷出的结果以及事件 A 的定义。
采用高级函数的写法
python
Copy
import itertools
# 所有可能的结果
all_outcomes = list(itertools.product(range(1, 7), repeat=2))
# 计算事件 A 包含的情况数
def count_event_A(outcomes):
count = 0
for outcome in outcomes:
# 这里我们假设事件 A 是某个特定的条件,例如两个骰子的和等于某个值
# 你可以根据具体的事件 A 的定义来修改这个条件
if (outcome[0] + outcome[1]) % 3 == 0: # 例如,和是3的倍数
count += 1
return count
# 计算事件 A 的情况数
event_A_count = count_event_A(all_outcomes)
print(f"事件 A 包含的情况数: {event_A_count}")
解释代码
生成所有可能的结果:
import itertools
all_outcomes = list(itertools.product(range(1, 7), repeat=2))
定义事件 A 的条件并计算情况数:
def count_event_A(outcomes):
count = 0
for outcome in outcomes:
# 这里我们假设事件 A 是某个特定的条件,例如两个骰子的和等于某个值
# 你可以根据具体的事件 A 的定义来修改这个条件
if (outcome[0] + outcome[1]) % 3 == 0: # 例如,和是3的倍数
count += 1
return count
计算事件 A 的情况数:
event_A_count = count_event_A(all_outcomes)
print(f"事件 A 包含的情况数: {event_A_count}")
运行结果
运行上述代码后,没有满足条件的点数和。
根据计算,2个骰子点数和为 7 的情况出现次数最多是 6 次,概率为 6/36
算法效率如何?
学习如何测算两种写法的效率 Big(O)
课后试试下面的作业
本文链接:http://xiaogongchang.cn/chatgpt/1144.html
chatgpt关联股票NexChatGPTChatGptchatgpt 可以用谷歌账号吗openai推付费版chatgptchatgpt现在能下载吗chatgpt老板ChatGPT APIchatgpt注册试用全攻略chatgpt国内怎么注册