Java 如何用这个乘法LCG生成(x,y)坐标?

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. * @

我用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.
 * @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)
接下来的42点是同一时期。这是我得到的输出:

但是,我的老师告诉我结果是错误的;因为在我的画布的坐标x,y中应该只有五个点或更多点;或者换一种说法,我的点数是错误的,坐标“y”是错误的。我当然不明白为什么它应该只有五个不同的点,或者我应该如何生成我的“y”坐标


如果LCG生成的周期是8,这不意味着程序正在为我的画布生成8个不同的“x”坐标吗?我真的很困惑,我不是在要求代码;但是对于为什么我的输出不正确的一些解释。

似乎您只生成了
x
,您也可以在相同的过程中生成
y
。最后,你可以把它们结合起来。@Ta_Req我能理解;但是为什么我应该得到五分而不是八分呢?我猜你的老师希望你得到前五分。@Tau Req我肯定他不是这个意思。通过研究,我发现晶格结构应用于LCG,也许他是这个意思?但是,按照这个结构,我只能生成4个点,其中p1是p1=(x1,x2),因为所有的点都是(xi,xi)形式,它们都在y=x线上,这绝对是一个非随机分布。