Java:如何创建一个有随机生日的人的房间?

时间:2014-10-04 18:22:42

标签: java math probability object-oriented-database birthday-paradox

这是我在Java上的第二天。我在生日悖论上遇到了一个有趣的问题。

  1. 随机生日。
  2. 创建一个随机生日的人。
  3. 建立一个功能,检查两个人是否有相同的生日。
  4. 创建一个具有给定人数的房间n。
  5. 建立一个功能,检查一个房间内至少有两个人是否有相同的生日。
  6. 然而,我被困在如何创造一个房间'与'人''然后比较这些人生日。

    有谁知道怎么做?

    感谢您的努力和时间! :)

        class Person {
        int age;
        }
    
        class Room {
        int Person;
        }
    
        public class BirthdayParadox {
        public static void main(String[] args) {
            int x = (int) (Math.random() * 364);
            int y = (int) (Math.random() * 364);
            long r = Math.round(x);
            long s = Math.round(y);
    
            Person person1 = new Person();
            person1.age = (int) r;
    
            Person person2 = new Person();
            person2.age = (int) s;
    
            if (person1.age == person2.age) {
    
                System.out.println("Same!");
            }
    
            else if (person1.age != person2.age) {
                System.out.println(person1.age + " " + person2.age);
            }
    
        }
    
        }
    

2 个答案:

答案 0 :(得分:2)

  1. 您的Room类应该包含List<Person>或Person数组(Person [])。

  2. Person的构造函数应接受dateOfBirth参数,或者,为了使其更简单,您可以接受1到365之间的整数,表示生日的日期,不包括这一年,因为你所关心的一切。不要给该成员age打电话,因为它与年龄无关。

  3. 您想使用(int)(Math.random() * 365) + 1,它会为您提供1到365之间的整数。您不需要使用Math.round()

答案 1 :(得分:-1)

为此,您只需要array个整数,每个索引都保存一个人的生日。

例如,要保存10个人的生日,您将创建一个大小为10的整数数组。

int[] birthdays = new int[10];

您可以使用以下内容为数组的索引赋值:

birthdays[2] = (int)(Math.random() * 364);

以上代码会将第3个人的生日分配给随机值。

要获得某人的生日,请使用类似的代码:

birthdays[1]

所以,要打印第5个人的生日,你会使用

System.out.println(birthdays[4]);

请记住,数组是0索引的,这意味着第一个值是0而最后一个是(size - 1)。因此,例如,第6个元素位于索引5处。