两个函数一个生成1概率为p,另一个生成0的概率为1-p,用这两个函数构造一个新函数,返回结果为0和1概率为1/2

func1 生成1的概率为p,那么不生成1概率为1-p

func2 生成0的概率为1-p,那么不生成0的概率为p。

情况一组合,发现都是p(1-p),则出现0,1概率为1/2.

int getOneWithp(); // p概率生成1
int getZeriWith1_p(); //1-p概率生成0

int getZeroAndOne(){
    while(1){
        int i = getOneWithp();
        int j = getZeriWith1_p();
        if(i == 1 && j == 0){
            //p概率生成1,1-p概率生成0,这种情况概率为p*(1-p)
            return 1;
        }
        if(i != 1 && j != 0){
            //1-p概率不生成1,p概率不生成0,这种情况概率为(1-p)*p
            return 0;
        }
    }
}

 

以下是一个使用tkinter和PIL库生成Python烟花效果的代码: ```python import tkinter as tk from PIL import Image, ImageTk import random class Firework: def __init__(self, canvas, x, y): self.canvas = canvas self.x = x self.y = y self.color = random.choice(['red', 'orange', 'yellow', 'green', 'blue', 'purple']) self.size = random.randint(5, 15) self.life = 10 self.particles = [] for i in range(50): vx = random.uniform(-1, 1) vy = random.uniform(-1, 1) particle = canvas.create_oval(x, y, x+1, y+1, fill=self.color, outline='') self.particles.append((particle, vx, vy)) def update(self): for particle, vx, vy in self.particles: self.canvas.move(particle, vx, vy) vx *= 0.95 vy *= 0.95 self.life -= 1 if self.life == 0: for particle, vx, vy in self.particles: self.canvas.delete(particle) class FireworkDisplay: def __init__(self, master): self.master = master self.canvas = tk.Canvas(master, width=500, height=500) self.canvas.pack() self.fireworks = [] self.update() def update(self): for firework in self.fireworks: firework.update() self.fireworks = [fw for fw in self.fireworks if fw.life > 0] if random.random() < 0.1: x = random.randint(50, 450) y = random.randint(50, 450) fw = Firework(self.canvas, x, y) self.fireworks.append(fw) self.master.after(50, self.update) root = tk.Tk() app = FireworkDisplay(root) root.mainloop() ``` 该代码使用了面向对象的编程方式,定义了两个类:`Firework`和`FireworkDisplay`。`Firework`类表示一个烟花,包含了烟花的颜色、大小、寿命和粒子等信息。`FireworkDisplay`类表示整个烟花放映效果,包含了一个画布和多个烟花对象。 在`Firework`类的构造函数中,首先随机生成烟花的颜色和大小,然后生成50个粒子,每个粒子随机生成一个速度,并在画布上创建一个圆点。在`update`方法中,更每个粒子的位置和速度,并逐渐减小速度,直到烟花的寿命结束,删除所有粒子。 在`FireworkDisplay`类的构造函数中,创建一个画布,并初始化一个空的烟花列表。在`update`方法中,更所有烟花的状态,删除已经结束的烟花,并以一定的概率生成的烟花。最后使用`after`方法定时调用`update`方法,实现动画效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值