天天看点

科大讯飞讯飞星火与ChatGPT的对比

作者:我想长成猪儿蟲

用科大讯飞与ChatGPT 通过描述 实现一段Java代码

描述内容 “n 个奖品,每个奖品的中奖概率不一样,实现抽奖 Java代码”

下面是两者的回复

科大讯飞

科大讯飞讯飞星火与ChatGPT的对比

完整代码如下:

import java.util.ArrayList;

import java.util.List;

import java.util.Random;



public class Lottery {

    public static void main(String[] args) {

        // 假设有10个奖项,每个奖项的中奖概率为0.1

        List<Integer> prizes = new ArrayList<>();

        for (int i = 1; i <= 10; i++) {

            prizes.add(i);

        }



        // 每个奖项的中奖概率列表

        List<Double> probabilityList = new ArrayList<>();

        for (int i = 0; i < prizes.size(); i++) {

            probabilityList.add((double) 1 / prizes.size());

        }



        // 随机抽取一个奖项

        Random random = new Random();

        int winnerIndex = random.nextInt(prizes.size());

        int winner = prizes.get(winnerIndex);



        // 根据中奖概率计算中奖概率值

        double probability = probabilityList.get(winnerIndex);

        double totalProbability = probabilityList.stream().reduce((a, b) -> a + b).getAsDouble();

        double winningProbability = Math.pow(probability, totalProbability);



        // 输出中奖结果

        System.out.println("恭喜编号为" + winner + "的选手获得一等奖!中奖概率为:" + winningProbability);

    }

}

           

下面是 ChatGPT 的回答

科大讯飞讯飞星火与ChatGPT的对比

完整代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Lottery {

    private List<Prize> prizes;
    private Random random;

    public Lottery() {
        prizes = new ArrayList<>();
        random = new Random();
    }

    public void addPrize(String name, double probability) {
        prizes.add(new Prize(name, probability));
    }

    public String drawPrize() {
        double totalProbability = 0.0;

        // 计算总概率
        for (Prize prize : prizes) {
            totalProbability += prize.getProbability();
        }

        double randomValue = random.nextDouble() * totalProbability;
        double cumulativeProbability = 0.0;

        // 根据概率抽取奖品
        for (Prize prize : prizes) {
            cumulativeProbability += prize.getProbability();
            if (randomValue <= cumulativeProbability) {
                return prize.getName();
            }
        }

        return null; // 未中奖
    }

    public static void main(String[] args) {
        Lottery lottery = new Lottery();
        lottery.addPrize("奖品A", 0.2); // 中奖概率为 0.2
        lottery.addPrize("奖品B", 0.3); // 中奖概率为 0.3
        lottery.addPrize("奖品C", 0.5); // 中奖概率为 0.5

        String luckyPrize = lottery.drawPrize();
        if (luckyPrize != null) {
            System.out.println("恭喜您中奖了!获得了:" + luckyPrize);
        } else {
            System.out.println("很遗憾,您没有中奖。");
        }
    }
}

class Prize {
    private String name;
    private double probability;

    public Prize(String name, double probability) {
        this.name = name;
        this.probability = probability;
    }

    public String getName() {
        return name;
    }

    public double getProbability() {
        return probability;
    }
}
           

还有很大的发展空间呀

继续阅读