2015-03-13 3 views
-1

^no. не таким образом. 2D. Я хочу перетасовать один D, не изменяя при этом других D. plus, что касается андроида. Получите это отсюда.Перемешать 2D-массив в одном измерении без эффекта другого измерения

У меня есть массив 2D который состоит из элементов:

Пример:

Document 1 = ["I", "am", "awesome"] 
Document 2 = ["I", "am", "great", "great"] 

Словарь:

["I", "am", "awesome", "great"] 

Так 2D массив будет выглядеть следующим образом:

[1, 1, 1, 0] 
[1, 1, 0, 2] 

Что я хочу т сделать это перетасовать вокруг расположения документов, поэтому там, где мы когда-то было:

Document 1 = [1, 1, 1, 0] 
Document 2 = [1, 1, 0, 2] 

теперь могут иметь:

Document 2 = [1, 1, 0, 2] 
Document 1 = [1, 1, 1, 0] 

Или мы не могли бы. Его следует перетасовать случайным образом.

Непонятный this.

Как реализовать это?

Моя структура данных выглядит следующим образом:

int z = 0; 
for (Cell< int[] , String , Integer > cell: train_freq_count_against_globo_dict.cellSet()) 
{    
    int[] container_of_feature_vector = cell.getRowKey(); 

    // 'q' CAN'T be shuffled, 'z' MUST be shuffled. 
    for (int q = 0; q < globo_dict_size; q++) 
    { 
     feature_matrix__train[z][q] = container_of_feature_vector[q]; 
    } 
    // use 1 and -1 not 0 and 1 
    outputs__train[z] = String.valueOf(cell.getColumnKey()).equals(LABEL) ? 1.0 : -1.0; 

    z++; 
} 

Смысл этого заключается в реализации стохастического градиентного спуска.


UPDATE:

static double[][] shuffleArray(double[][] input_array) 
    { 
    Random rnd = new Random(); 
    for (int i = input_array.length - 1; i > 0; i--) 
    { 
     int index = rnd.nextInt(i + 1); 
     // Simple swap 
     double[] container = input_array[index]; 
     input_array[index] = input_array[i]; 
     input_array[i] = container; 
    } 
    return input_array; 
    } 
+0

возможно дубликат [Random перетасовки массива] (http://stackoverflow.com/questions/1519736/random-shuffling-of-an-array) –

+0

@ThomasJungblut нет, не то же самое. Я хочу просто перетасовать 1D без эффекта другого D –

+0

работает точно так же. –

ответ

0

ли это так!

Но не верьте мне на слово, используйте System.out.println(Arrays.deepToString(input_array)); и убедитесь, что результат сам. наука.

static double[][] shuffleArray(double[][] input_array) 
    { 
    Random rnd = new Random(); 
    for (int i = input_array.length - 1; i > 0; i--) 
    { 
     int index = rnd.nextInt(i + 1); 
     // Simple swap 
     double[] container = input_array[index]; 
     input_array[index] = input_array[i]; 
     input_array[i] = container; 
    } 
    return input_array; 
    }