本篇将通过 Python 和 Cangjie 双语实现基础概率的计算,帮助学生学习如何解决简单的概率问题,并培养逻辑推理和编程思维。
关键词
- 小学奥数
- Python + Cangjie
- 概率计算
一、题目描述
假设有一个袋子中有 5 个红球和 3 个蓝球,每次从袋子中随机抽取一个球。请编写程序计算:
- 抽到红球的概率。
- 抽到蓝球的概率。
- 连续两次抽到红球的概率(不放回)。
输入格式:从控制台输入红球和蓝球的数量。
输出格式:输出三项概率结果,保留两位小数。
二、Python 实现
# 接收用户输入
red = int(input("请输入红球的数量: "))
blue = int(input("请输入蓝球的数量: "))
# 总球数
total = red + blue
# 计算概率
p_red = red / total
p_blue = blue / total
p_two_red = (red / total) * ((red - 1) / (total - 1))
# 输出结果,保留两位小数
print(f"抽到红球的概率: {p_red:.2f}")
print(f"抽到蓝球的概率: {p_blue:.2f}")
print(f"连续两次抽到红球的概率(不放回): {p_two_red:.2f}")
三、Cangjie 实现
package cjcDemo
import std.convert.* // 导入用于数据转换的模块
import std.console.* // 导入用于控制台输入输出的模块
import std.format.* // 导入用于字符串格式化的模块
// 定义函数接收并转换用户输入为 Float64
func inputFloat(info: String): Float64 {
print(info)
let number: Float64 = Float64.parse(Console.stdIn.readln().getOrThrow())
return number
}
main(): Int64 {
let red = inputFloat("请输入红球的数量: ")
let blue = inputFloat("请输入蓝球的数量: ")
let total = red + blue
let p_red = red / total
let p_blue = blue / total
let p_two_red = (red / total) * ((red - 1.0) / (total - 1.0))
println("抽到红球的概率: ${p_red.format("0.2")}")
println("抽到蓝球的概率: ${p_blue.format("0.2")}")
println("连续两次抽到红球的概率(不放回): ${p_two_red.format("0.2")}")
return 0
}
四、图形展示(扩展部分)
以下代码使用 Python 生成概率计算的可视化图形。本部分是进阶扩展内容,当前阶段不要求理解:
from PIL import Image, ImageDraw, ImageFont
# 创建画布
img = Image.new('RGB', (600, 300), color='white')
draw = ImageDraw.Draw(img)
font = ImageFont.load_default()
# 绘制概率计算的结果
draw.text((10, 10), "抽到红球的概率: 0.62", fill="black", font=font)
draw.text((10, 50), "抽到蓝球的概率: 0.38", fill="black", font=font)
draw.text((10, 90), "连续两次抽到红球的概率: 0.36", fill="black", font=font)
# 保存图像
img_path = "probability_visualization.png"
img.save(img_path)
print(f"图形已保存为 {img_path}")
生成的图像如下:
五、示例执行
示例 1:
输入:
红球数量: 5
蓝球数量: 3
输出:
抽到红球的概率: 0.62
抽到蓝球的概率: 0.38
连续两次抽到红球的概率(不放回): 0.36
示例 2:
输入:
红球数量: 2
蓝球数量: 2
输出:
抽到红球的概率: 0.50
抽到蓝球的概率: 0.50
连续两次抽到红球的概率(不放回): 0.17
六、小结
通过这道概率计算的题目,学生学习了如何运用概率公式解决数学问题,并掌握了如何在编程中实现概率的计算与逻辑思维的应用。
上一篇: 「Mac玩转仓颉内测版45」小学奥数篇8 - 排列组合计算
下一篇: 「Mac玩转仓颉内测版47」小学奥数篇10 - 数列求和
作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=392
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。