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

Kirim email ke