如何在随机数生成后得到数字序列

时间:2015-03-23 02:10:02

标签: java random

在加密算法的中间,我已经编写了代码来随机随机播放java中的一系列数字。 这是代码:

public class permute6 {
public static void main(String args[])
{
    Random rand = new Random();
    int arr[] = {10,20,30,40,50,60,70,80};// Original Array

    System.out.println("Original array is" );
    for(int k = 0; k<arr.length;k++ )
        System.out.print(arr[k] +  "\t" );
    System.out.println(" ");

    int max = arr.length - 1;
    int min = 0;
    int rnum;
    int larr = arr.length - 1;
    int[] parr = new int[arr.length];// to store the permuted array 
    int flag = 0;// 'flag' to flag the recurring number
    int plen = parr.length - 1;
    for(int i = 0 ; i < arr.length ; i++)
    {
             rnum = (rand.nextInt((max-min)+1) + min);// roll for the     
                    random number
             parr[plen] = arr[rnum];
             arr[rnum] = arr[larr];

             larr--;// to reduce the size of the original array
             plen--;// to make the parr to act like a stack
             max--;
    }

    System.out.println("Permuted array is" );
    for(int k = 0; k<arr.length;k++ )
        System.out.print(parr[k] +  "\t" );

    System.out.println();
  }
  }

如果初始数组是{10,20,30,40,50,60,70,80}

然后其中一个改组的结果是

50 20 30 10 60 80 70 40

现在,如果我传输此数组,那么如何在目的地端取回原始序列?可以做些什么来跟踪序列? 这里缺少什么....感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

您可以将两个数组提交到目标parr和temp; 帕尔:[50 20 30 10 60 80 70 40] 和 temp(它基本上与原始阵列的区别,例如parr-arr):

像{50,20,30,10,60,80,70,40} - {10,20,30,40,50,60,70,80} temp = {40,0,0,-30,10,20,0,-40}

现在, 在目的地再次得到parr和temp&#34; parr-temp&#34;   {50,20,30,10,60,80,70,40} - {40,0,0,-30,10,20,0,-40} = {10,20,30,10 - ( - 30),50,60,70,40 - ( - 40)}

您将获得原始序列而不在目的地发送原始数组

另一个解决方案与前一个解决方案有关,但它会避免将两个阵列转移到目的地。将temp和parr合并为一个数组,例如newArr = {50,40,20,0,30,0,10,-30,60,10,80,20,70,0,40,-40} 并且在目的地只是从下一个元素中减去每个元素,你将只使用一个数组获得原始数组。