9.24动手动脑

前提是你 提交于 2019-11-30 16:42:10

请看以下代码,你发现了有什么特殊之处吗?

 

 这段代码定义了重载函数,所以两个输出里面的函数名一样,但运行的结果不一样。

 

编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。

 

 

Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231-2个数之后,才可能重复。

public class suiji
{
private static final int N = 200;
private static final int LEFT = 40;
private static final int RIGHT = 10000;
private static long x0 = 1L;
private long a = 1103515245L;
private long c = 12345L;
private long m = 2147483648L;

// 产生随机数
private long rand ( long r )
{
// a,c,m为常数
r = ( r * a + c ) % m;//Xn+1=(aXn + c)mod m
return r;
}

* 表示a~b之间的一个随机数
private long little ( int a, int b, long rand )
{
return a + rand % ( b - a + 1 );
}

private void recursion ( int count, long rand )
{
if (count >= N)
{
return;
}
rand = rand (rand);
long r = little (LEFT, RIGHT, rand);
System.out.print (r + " ");
recursion (++count, rand);
}

public static void main ( String[] args )
{
suiji recur = new suiji ();
recur.recursion (0, x0);
}
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!