Java 如何用这个乘法LCG生成(x,y)坐标?
我用Java开发了以下代码:Java 如何用这个乘法LCG生成(x,y)坐标?,java,swing,random,output,lcg,Java,Swing,Random,Output,Lcg,我用Java开发了以下代码: /** * Método que sirve como generador lineal con unos parámetros dados. * @param multiplier multiplicador de la seed dada. * @param seed semilla inicial del programa; indicará en que punto del periodo comienza el generador. * @
/**
* Método que sirve como generador lineal con unos parámetros dados.
* @param multiplier multiplicador de la seed dada.
* @param seed semilla inicial del programa; indicará en que punto del periodo comienza el generador.
* @param addition adición adicional a la semilla.
* @param modulus módulo usado.
* @param num cantidad de numeros a generar.
* @return un vector con los valores generados.
*/
public static BigDecimal[] generadorLineal(BigDecimal multiplier, BigDecimal seed, BigDecimal addition, BigDecimal modulus, int num)
{
BigDecimal numeros[] = new BigDecimal[num];
numeros[0] = multiplier.multiply(seed);
numeros[0] = numeros[0].add(addition);
numeros[0] = numeros[0].remainder(modulus);
for(int i = 1; i < num; i++){
numeros[i] = multiplier.multiply(numeros[i-1]);
numeros[i] = numeros[i].add(addition);
numeros[i] = numeros[i].remainder(modulus);
}
/*for(int i = 0; i < num; i++){ //normalization (0,1)
numeros[i] = numeros[i].divide(modulus.subtract(BigDecimal.valueOf(1)), 2, RoundingMode.HALF_UP);
}*/
return numeros;
}
/**
我是一个普通的人。
*@param multiplier multiplicator de la seed dada。
*@param seed semilla inical del programa;这是一个新的时期。
*@param addition adición adicional a la semilla。
*@param模数módulo usado。
*@param num cantidad de numeros a generar。
*@return un vector con los valores generados。
*/
公共静态BigDecimal[]GeneratorLineal(BigDecimal乘数、BigDecimal种子、BigDecimal加法、BigDecimal模、int num)
{
BigDecimal numeros[]=新的BigDecimal[num];
numeros[0]=乘法器。乘法(种子);
numeros[0]=numeros[0]。添加(添加);
数值[0]=数值[0]。余数(模数);
for(int i=1;i
还有下一个例子:
我随机生成50个点;实际上是八岁:
- p1(x1,y1)=(5,5)
- p2(x2,y2)=(25,25)
- p3(x3,y3)=(29,29)
- p4(x4,y4)=(17,17)
- p5(x5,y5)=(21,21)
- p6(x6,y6)=(9,9)
- p7(x7,y7)=(13,13)
- p8(x8,y8)=(1,1)
如果LCG生成的周期是8,这不意味着程序正在为我的画布生成8个不同的“x”坐标吗?我真的很困惑,我不是在要求代码;但是对于为什么我的输出不正确的一些解释。似乎您只生成了
x
,您也可以在相同的过程中生成y
。最后,你可以把它们结合起来。@Ta_Req我能理解;但是为什么我应该得到五分而不是八分呢?我猜你的老师希望你得到前五分。@Tau Req我肯定他不是这个意思。通过研究,我发现晶格结构应用于LCG,也许他是这个意思?但是,按照这个结构,我只能生成4个点,其中p1是p1=(x1,x2),因为所有的点都是(xi,xi)形式,它们都在y=x线上,这绝对是一个非随机分布。