for(int i=0;i<nums.length; i++) { int j = random.nextInt( nums.length) ; ... }
Dari potongan kode di atas (di mana N = nums.length), nilai j akan selalu dipilih antara 0 sampai dengan N (eksklusif), sehingga ada N kemungkinan salah satu elemen akan menempati posisi 0 pada hasil shuffle, N kemungkinan menempati posisi 1, dan seterusnya sampai posisi N-1. Dari situlah muncul N^N, yaitu jumlah kemungkinan permutasi (tidak unik) jika selalu menggunakan range dari 0-N untuk bilangan random di dalam loop. Perlu diketahui bahwa operasi swap tidak mengurangi jumlah ini. 2008/12/5 timotius sakti <[EMAIL PROTECTED]>: > Kalo boleh tau, angka N^N itu dapat darimana ya ? > > Thanks > > - Timotius Sakti > > visit my blog: > http://nomoreac.wordpress.com > > --- Pada Jum, 5/12/08, monang_ok <[EMAIL PROTECTED]> menulis: > > Dari: monang_ok <[EMAIL PROTECTED]> > Topik: Re: Bls: [JUG-Indonesia] Slusi random agar tak sama > Kepada: jug-indonesia@yahoogroups.com > Tanggal: Jumat, 5 Desember, 2008, 7:44 AM > > Nambahin dikit (walaupun method shuffle sebelumnya sudah cukup untuk > practical uses). > > Supaya hasil shuffle-nya lebih sempurna (salah satu dari N! > kemungkinan permutasi, bukan dari N^N), kandidat elemen yang akan > di-swap seharusnya diambil dari sisa seleksi sebelumnya. Sehingga > method shuffle-nya menjadi seperti berikut : > > public static void shuffle(int[ ] nums) { > Random random = new Random(); > for (int i = 0; i < nums.length; i++) { > // int j = random.nextInt( nums.length) ; > int j = i + random.nextInt( nums.length - i); > int temp = nums[i]; > nums[i] = nums[j]; > nums[j] = temp; > } > } > > (kode di atas boros 1 cycle) > > --- In jug-indonesia@ yahoogroups. com, timotius sakti <timotius86@ ...> > wrote: >> >> Ini cara shuffle array int 1 dimensi. >> >> import java.util.Random; >> >> public class Main { >> Â Â Â public static void shuffle(int []nums) { >> Â Â Â Â Â Â Random random = new Random(); >> Â Â Â Â Â Â for(int i=0;i<nums.length; i++) { >> Â Â Â Â Â Â Â Â Â int j = random.nextInt( nums.length) ; >> Â Â Â Â Â Â Â Â Â int temp = nums[i]; >> Â Â Â Â Â Â Â Â Â nums[i] = nums[j]; >> Â Â Â Â Â Â Â Â Â nums[j] = temp; >> Â Â Â Â Â Â } >> Â Â Â } >> Â Â Â >> Â Â Â public static void main(String args[]) { >> Â Â Â Â Â Â int nums[]={1,2, 3,4,5,6,7} ; >> Â Â Â Â Â Â Main.shuffle( nums); >> Â Â Â Â Â Â for(int i=0;i<nums.length; i++) > System.out.println( nums[i]); >> Â Â Â } >> } >> >> - Timotius Sakti >> >> visit my blog: >> http://nomoreac. wordpress. com -- "Don't worry about what anybody else is going to do. The best way to predict the future is to invent it." - Alan Kay