Esta es parte del código que genera los números pseudo aleatorios, lamento no subir todo el código puesto que no se puede adjuntar archivos.
El programa que realice contiene los algoritmos Cuadrados medios, productos medios y el algoritmo lineal.
Esta parte del código genera los numeros de el algoritmo lineal:
private void jBlinealActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBlinealActionPerformed
// TODO add your handling code here:
int x1=0, a, c, m, repeticiones, i = 1, residuo;
double x = 0.0;
repeticiones = (int)(Float.parseFloat(jTCantidad.getText()));
while (i < repeticiones){
if (i == 1){
x1 = (1+(int)(Math.random()*100));
}
a = 1+4*((int)Float.parseFloat(jTK.getText()));
m = (int)Math.pow(2,(Float.parseFloat(jTG.getText())));
residuo = ((int)(x1*a + (Float.parseFloat(jTC.getText())))%m);
x = (double)(residuo / (m-1.00));
jTAlineal.append(”( “+x1+” * “+a+” + “+((int)Float.parseFloat(jTC.getText()))+” ) mod “+m+” = “+residuo+”\tr1 = “+x+”\n”);
x1 = residuo;
i++;
}
activarLineal(0);
activar(0);
}
Y el siguiente hace el proceso de cuadrados medios:
if (banderaGlobal == 1){
i = 0;
while (i<repeticiones){
if (i == 0){
y = (int)(Math.pow(muestra,2)); //La muestra es útil en la primera corrida, luego se utiliza
}else{
y = (int)(Math.pow(y,2)); // y como en este caso
}
ayuda = y / 1000000; //Esta y las otras 3 líneas obtienen el valor de x1
ayuda = ayuda * 1000000;
y = y - ayuda;
x1 = y / 100;
if (x1 == 0){
jTextArea1.append(x1+”El algorito se degenera\n”);
}else{
jTextArea1.append(x1+”\n”);
}
jTextArea1.append(x1+”\n”);
media = media + x1;
y = x1; //Y coge el valor de x1 para la nueva operación
valores[i]=x1;
i++;
}
Para obtener los cuatro valores de la mitad en este algoritmo se puede utlizar ls funciones to string y substring que proporciona java.
Programa realizado por Santiago Ludeña* tuve un problema con mi cuenta por lo que uso la de la compañerita, ñerita.