Как сделать простой случайный вид значений в массиве - PullRequest
0 голосов
/ 29 апреля 2011

Мне нужно отсортировать эти значения случайным образом в массиве.

int [] d = new int[26];  
        d[0]=1;  
        d[1]=5;  
        d[2]=10;  
        d[3]=25;  
        d[4]=50;    
        d[5]=75;  
        d[6]=100;  
        d[7]=200;  
        d[8]=300;  
        d[9]=400;  
        d[10]=500;  
        d[11]=750;  
        d[12]=1000;  
        d[13]=2000;  
        d[14]=3000;  
        d[15]=4000;  
        d[16]=5000;  
        d[17]=7500;  
        d[18]=10000;  
        d[19]=25000;   
        d[20]=50000;  
        d[21]=100000;  
        d[22]=250000;  
        d[23]=500000;  
        d[24]=750000;  
        d[25]=1000000;  

Ответы [ 3 ]

0 голосов
/ 29 апреля 2011

Если вы хотите написать свою собственную функцию, просто возьмите два случайных индекса и поменяйте местами их значения.Поместите это в цикл и делайте это столько раз, сколько считаете необходимым, чтобы массив был хорошо перетасован (я бы сказал, число раз, равное числу элементов в массиве, в два раза больше).

In psudo-код (так как вы не указали язык)

NUMBER_OF_SHUFFLES = 2;    
for(ix = 0; ix < NUMBER_OF_SHUFFLES * myArray.length; ix++)
    index1 = random(myArray.length)
    index2 = random(myArray.length)
    temp = index1

    myArray[index1] = myArray[index2]
    myArray[index2] = temp

Есть и более сложные способы сделать это.Проверьте это обсуждение: Эффективный способ рандомизации массива - Shuffle code

0 голосов
/ 25 февраля 2013

Если это Java, вы можете использовать

Arrays.shuffle(d);
0 голосов
/ 29 апреля 2011

Если вы пишете это на C ++, вы можете использовать шаблон функции random_shuffle из стандартной библиотеки.http://www.cppreference.com/wiki/algorithm/random_shuffle

...