Original Sender : Ryo Saeba <[EMAIL PROTECTED]>
---------------------------------
At 08:16 PM 3/29/99 +0700, agust wrote:
>mis dua buah array dgn index 1 s/d 40, katakanlah namanya P dan W
>utk P diisi nama2 pria dan W nama2 wanita.
>i,j adalah bilangan index, eg integer.
>r,s adalah bilangan random.
>
>algoritma
>
>loop i dari 40 s/d 1
>
>r = random bulat dari 1 s/d i
>s = random bulat dari 1 s/d i
>
>P[r] dan W[s] adalah pasangan ke-i -> bisa disimpan/cetak dsb
>
>tukarkan isi P[r] dengan P[i]
>tukarkan isi W[s] dengan W[i]
>
>akhir loop
>
>
>>Lalu, bagaimana jika dilakukan pengacakan lagi, maka pada pengacakan
>>selanjutnya itu tidak ada pasangan yang sama lagi seperti pada pengacakan
>>pertama. Begitu seterusnya untuk pengacakan selanjutnya.
>>Sampai batas berapa kali pengacakan dapat dihasilkan pasangan nama yang
>>setiap kali berbeda ?
>>
>
>setiap kombinasi disimpan dan pada loop kedua setiap kali didapatkan
>pasangan
>periksa pada kombinasi yg telah disimpan sebelumnya kalo sudah pernah
>ulangi lagi generate bilangan randomnya.
Di simpan dalam bentuk apa? Array juga? IMHO algoritmanya terlalu boros.
Cara gue adalah begini:
Fungsi random(n) akan mengembalikan bilangan integer antara 1 dan n.
for i = 40 downto 1
r = random(i)
s = random(i)
temp = P[i]
P[i] = P[r]
P[r] = temp
temp = W[i]
W[i] = W[s]
W[s] = temp
Pasangan ke (41 - i) = P[i] & W[i]
next i
Silakan cek algoritma di atas, akan terjamin kalau pasangan random yang
digenerate berikutnya tidak akan sama dengan sebelumnya, tanpa perlu
melakukan pencekan terhadap pasangan yang sudah ada.
Yang jadi masalah adalah ada berapa kombinasi pasangan tanpa mengulang
pasangan yang sudah ada.
I want to live for love,
not to die for love - CiTyHuNTeR
----------------------------------------------------------------
Compu-Mania MailingList is provided by PT Centrin Utama
Maintained by : [EMAIL PROTECTED]
To Post a msg : Send mail to [EMAIL PROTECTED]
To Unsubscribe : Mail to [EMAIL PROTECTED]
BODY : unsubscribe Compu-Mania
For more information, send mail to [EMAIL PROTECTED]
with "HELP" in the BODY of your mail (without quote).
----------------------------------------------------------------