动手动脑

X(n+1) = (a * X(n) + c) mod mModulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231-2个数之后,才可能重复。 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。

public class RandomnNumberGenerator {
    private static final long MODULUS = (long) Integer.MAX_VALUE;
    private static final long MULTIPLIER = 16807;
    private static final long CONSTANT = 0;

    public static long[] generateRandomNumbers(int count) {
        long[] randomNumbers = new long[count];
        long seed = 1;

        for (int i = 0; i < count; i++) {
            seed = (MULTIPLIER * seed + CONSTANT) % MODULUS;
            randomNumbers[i] = seed;//限制在1000以内(randomNumbers[i] = seed % 1000;)
  } 
    return randomNumbers;
}
public static void main(String[] args) {
  int count = 1000;
  long[] randomNumbers = generateRandomNumbers(count);
// 输出生成的随机数
    for (long number : randomNumbers) {
    System.out.println(number);
  }
  }
}

  这样的随机数都很大,在源代码中我有注释如何修改。

 

观察观察下行代码,有什么特殊的地方?

public class MethodOverload {

	public static void main(String[] args) {
		System.out.println("The square of integer 7 is " + square(7));
		System.out.println("\nThe square of double 7.5 is " + square(7.5));
	}

	public static int square(int x) {
		return x * x;
	}

	public static double square(double y) {
		return y * y;
	}
}

  定义了两个名为 square 的方法,一个接受一个整数参数,另一个接受一个双精度浮点数参数。这两个方法的名称相同,但参数类型不同。

posted @ 2023-09-22 16:47  *太¥^白%  阅读(206)  评论(0编辑  收藏  举报