java数字序列改变数字位置的问题,mchromosome是一个二元数组,int[][];前一个[]代表index,即从0到n-1,共N个(N是个常数),后一个[]是一个从1到k的数字序列,每个序列的数字数目k不一定相等,但是序列
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/07 15:30:00
java数字序列改变数字位置的问题,mchromosome是一个二元数组,int[][];前一个[]代表index,即从0到n-1,共N个(N是个常数),后一个[]是一个从1到k的数字序列,每个序列的数字数目k不一定相等,但是序列
java数字序列改变数字位置的问题,
mchromosome是一个二元数组,int[][];
前一个[]代表index,即从0到n-1,共N个(N是个常数),后一个[]是一个从1到k的数字序列,每个序列的数字数目k不一定相等,但是序列在使用时是已知确定的,由之前函数得出的值赋给它.
我现在要按index的增序,取出mchromosome中后一个[]的数字序列,对其完成下边的操作,并再赋回给对应的index,最后形成一个新的mchromosome.
①Swap:在一个由1-k,k个数字构成的序列中,选取任意两个位置的数字,并交换他们的位置;
②Insert:在一个由1-k,k个数字构成的序列中,随机选取一个数字,并将它插入到剩下的k-1个数字中间的某一个位置,并保证不与之前的序列相同;
java数字序列改变数字位置的问题,mchromosome是一个二元数组,int[][];前一个[]代表index,即从0到n-1,共N个(N是个常数),后一个[]是一个从1到k的数字序列,每个序列的数字数目k不一定相等,但是序列
package tool;
import java.util.Arrays;
public class GuessNumber
{
private static void swap ( int[][] mchromosome )
{
int[] randoms = getRandomIndex (mchromosome[0].length);
for ( int index = 0; index < mchromosome.length; index++ )
{
int temp = mchromosome[index][randoms[0]];
mchromosome[index][randoms[0]] = mchromosome[index][randoms[1]];
mchromosome[index][randoms[1]] = temp;
}
}
private static void insert ( int[][] mchromosome )
{
int[] randoms = getRandomIndex (mchromosome[0].length);
for ( int index = 0; index < mchromosome.length; index++ )
{
if (randoms[0] < randoms[1])
{
for ( int i = randoms[0] + 1; i < randoms[1]; i++ )
{
mchromosome[index][i] = mchromosome[index][i + 1];
}
mchromosome[index][randoms[1]] = mchromosome[index][randoms[0]];
}
else
{
for ( int i = randoms[1] + 1; i < randoms[0]; i++ )
{
mchromosome[index][i] = mchromosome[index][i - 1];
}
mchromosome[index][randoms[1]] = mchromosome[index][randoms[0]];
}
}
}
private static int[] getRandomIndex ( int k )
{
int[] randoms = new int[2];
int a = (int) ( Math.random () * k );
int b = a;
while (b == a)
{
b = (int) ( Math.random () * k );
}
randoms[0] = a;
randoms[1] = b;
System.out.println ("indexs :" + Arrays.toString (randoms));
return randoms;
}
public static void main ( String[] args )
{
int[][] mchromosome = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15 } };
swap (mchromosome);
for ( int[] is : mchromosome )
{
System.out.println (Arrays.toString (is));
}
int[][] mchromosome1 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 }, { 13, 14, 15 } };
insert (mchromosome1);
for ( int[] is : mchromosome1 )
{
System.out.println (Arrays.toString (is));
}
}
}