A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 木木贤津 初级黑马   /  2018-11-14 20:41  /  579 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

经过老师详细的讲解和多天的学习,让我已经开始有点小入门。以后的路还很长,希望可以越走越远。以下是我通过学习能自己编写的一些小代码,不喜勿喷:
1. 斗地主发牌机制:
public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();

    method(list, "黑桃");
    method(list, "方块");
    method(list, "梅花");
    method(list, "红桃");
    list.add("小王");
    list.add("大王");
//上面的代码主要就是调用方法把54张牌添加到集合中
    System.out.println(list);
    System.out.println("===========");
// 调用三次随机发牌机制,就会有三个集合出来,各是17张牌,之后大集合只剩余3张牌。
    method(list);
    method(list);
    method(list);
    System.out.println(list);

}

//该方法主要把一副牌除了大小王 可以一次添加到 集合当中
public static void method(ArrayList<String> list, String str) {
    for (int i = 1; i <= 13; i++) {
        list.add(str + i);     
    }
}
// 该方法主要是把一个大集合当中的牌 随机发出17张放到新的集合当中,每发出1张,大集合会移除发出的牌
public static void method(ArrayList<String> list) {
    ArrayList<String> listA = new ArrayList<>();
    Random r = new Random();
    for (int i = 0; i < 17; i++) {
        int num = r.nextInt(list.size());
        listA.add(list.get(num));
        list.remove(num);
    }
    System.out.println(listA);
}
2. 发红包随机的方法
// 传入的参数:  多少钱,多少份
public ArrayList<Integer> divide(final int totalMoney, final int totalCount) {
    ArrayList<Integer> list = new ArrayList<>();
    Random r = new Random();
    int leftMoney = totalMoney;
    int leftCount = totalCount;
// 来一个循环,循环次数比份数少1,因为最后一个人抢的就是剩余的钱
    for (int i = 0; i < totalCount - 1; i++) {
//1 + random.nextInt(leftMoney / leftCount * 2)  就是抢红包的范围公式
        int money = r.nextInt(leftMoney / leftCount * 2) + 1;
        list.add(money);
        leftMoney -= money;
        leftCount--;
    }
    list.add(leftMoney);
    return list;
}
通过这个抢红包范围的公式,知道了抢红包第一个抢比较吃亏,当然,最主要的还是看RP

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马