第二节java课动手动脑
1.纯随机数发生器
问题:
源代码:
package Main;
import java.util.Date;
public class Main {
//初始数值设置
static long a=16807L;
static long m=2147483647L;
static long c=46;
public static void main(String[] args) {
long x=5642L;
for(int i=0;i<1000;i++)
{ x=random(x);
System.out.println(x);
}
}
//random函数
public static long random(long x)
{
x=(a*x+c)%m;
return x;
}
}
程序截图:
设计思路:用x=(a*x+c)mod m,利用前一位x求出后一位x,这样设计虽然会造成结果循环,但m只要足够大循环就会无限大可以不用考虑。m也决定着生成随机数的最大值为2147483647。
2.
特殊之处:
两个不同的函数公用同一个函数名。属于重载。