一个关于java的问题,请高手解决一下。
近年来,替代传统的统一的伪随机数发生器(例如randow( )函数在C / C + +或者随机在Java类)已流行起来。有种替代叫Lagged Fibonacci伪随机数发生器(或LFGs) 。 LFGs是基于Fibonacci数列,Fibonacci所产生的公式:X(n) = X(n-1) + X(n-2) where n > 1 and X(1) = X(0) = 1
比如Fibonacci产生的数列为: 1, 1, 2, 3, 5, 8, 13, ......
一个LFG产生的公式为:
X(n) = (X(n-L) + X(n-k)) % m where l > k > 0, and m > 0
X(0) ,X(1)… X(L-1)是你自己给定好的(叫做产生LFG数列的种子)
任务:
写Java程序能够产生不同的LFG序列。该项目必须使用命令行参数,使初始化的L(种子个数) ,k,m() ,和n(种子个数) 。举例来说,这里是一个可能的输出的程序:
$ java AssignmentOne
Usage: java AssignmentOne l k m seeds n
$ java AssignmentOne 4 3 10 1 2 3 4 10
[3,5,7,7,8,2,4,5,0,6]
第一个例子表明,执行无效的命令行参数的使用讯息。在第二个例子,一个序列的LGF伪随机数字显示是: L = 4 ,当k = 3 m= 10 ,X( 0 ) = 1 ,X( 1 ) = 2 ,X( 2 ) = 3 ,X( 3 ) = 4 ,和n = 10 。
要求:
这项工作由建设以下的源代码文件:
File: AssignmentOne.java
AssignmentOne.java是主要的Java程序完成这个任务,它是用来提取命令行参数并启用LGF对象
File: LaggedFib.java
LFG类,包含一个接口,具体的LFG值和产生LFG伪随机数字。
储存LFG种子的值必须用到Vector类.