我有12个文件
每个文件里均有一列double数值
每列数值都可以分成4个二维数组
现在想进行T次循环,
循环一次,通过随机置换每次都把各个文件的二维数组随机呼唤一遍,当然每个文件的每个二维数组都被呼唤至少一次
有点绕,不知道说明白没有,能不能给个思路?我现在想的是:
1,先把所有文件随机置换一遍,每次处理一个文件,在这个文件里把它自己的二维数组随机处理一遍,然后再进行下个文件。发现不对劲,没按照原题走。
2,然后我就想是不是可以把所有的12个文件的二维数组存到一个大的List里,然后进行随机呼换每个数组进行处理。但是感觉有点笨
3,又想了一下,是不是把12个文件放到一个文件里,列成12个列,但是没办法随机抽取对应的二维数组达人还有什么方法吗?谢谢啦
每个文件里均有一列double数值
每列数值都可以分成4个二维数组
现在想进行T次循环,
循环一次,通过随机置换每次都把各个文件的二维数组随机呼唤一遍,当然每个文件的每个二维数组都被呼唤至少一次
有点绕,不知道说明白没有,能不能给个思路?我现在想的是:
1,先把所有文件随机置换一遍,每次处理一个文件,在这个文件里把它自己的二维数组随机处理一遍,然后再进行下个文件。发现不对劲,没按照原题走。
2,然后我就想是不是可以把所有的12个文件的二维数组存到一个大的List里,然后进行随机呼换每个数组进行处理。但是感觉有点笨
3,又想了一下,是不是把12个文件放到一个文件里,列成12个列,但是没办法随机抽取对应的二维数组达人还有什么方法吗?谢谢啦
每行有个基数,比如第一个文件基数 是 0 用fileIndex表示第二个文件就是1了那么循环时用Math.abs(new Random().nextInt()%4+ fileIndex*4)
这样随即置换就可以了。
array[];
for(int i=0;i<48;i++){
int rd = Math.abs(new Random().nextInt()%4+ fileIndex*4;
swap(i,rd);//交换
}
楼主是这么个意思吗?
每个文件里均有一列double数值
每列数值都可以分成4个二维数组
现在想进行T次循环,
循环一次,通过随机置换每次都把各个文件的二维数组随机呼唤一遍,当然每个文件的每个二维数组都被呼唤至少一次不明白题意(原题是什么样的,或把要求说清楚点)
我现在有12个文件,每个文件都有四个数组,(也许也可以有更多文件,对应的可以有更多数组)
只是每个文件里都是double数字,这些数字都在一个列里。我已经按题目要求把每个文件的一列数字分成了4个数组。
现在就要求把所有12个文件的所有数组,也就是总计48个数组随机抽取进行处理,我看你们的回复,感觉就是要把这48个都放一起随机抽取处理方便。二楼没看懂啥意思。
每次交换都需要重新写文件,而且你的文件还不是定长结构,所以写进去的数字长度会导致整个文件的重排。比如你刚好要交换:A文件的第一个数 10 <--> B文件的第三个数 99.88
那么这两个数长度是不一样的,你为了让交换立即反映回文件去,重写的时候相当于要重写整个文件。所以,反正你的数据规模不大,全部装载进内存进行运算,然后再重写所有文件,效率肯定是最高的。
另外,有一点没有太清晰:是不是你A文件的数字只会在A文件内部随机交换?如果是这样的话,也可以逐个文件处理,不需要一次性装载所有文件。甚至可以并发多线程处理,反正文件之间互不相干。