3/07/2013

Generate Bilangan random dengan Delphi

Filled under:


Cara Generate Bilangan Random Pada Delphi

Random Function
Generate bilangan acak floating point atau integer.
1.  function Random : Extended;
2.  function Random ( LimitPlusOne : Integer ) : Integer;
Deskripsi
Random function menghasilkan bilangan-bilangan random. Dapat berupa Floating Point Number yaitu dalam kisaran :
0 <= Number < 1.0 
Atau berupa Integer number dalam kisaran :
0 <= Number < LimitPlusOne 
Delphi menggunakan generator bilangan pseudo acak yang selalu mengembalikan urutan nilai yang sama (232) setiap kali program berjalan.  Untuk menghindari prediktabilitas, gunakan Random prosedur. Ini mereposisi ke dalam urutan bilangan acak menggunakan waktu dalam hari sebagai seed pseudo random.

Contoh kode: Generate set bilangan floating point dan integer.
var
  float : single;
  int   : Integer;
  i     : Integer;

begin
    for i := 1 to 5 do
  begin
    float := 
Random;
    ShowMessage('float = '+FloatToStr(float));
  end;
  ShowMessage('');

  
// dapatkan angka integer random dalam rentang 1..100
  for i := 1 to 5 do
  begin
    int := 1 + 
Random(100);    // nilai 100 memberi rentang 0..99
    ShowMessage('int = '+IntToStr(int));
  end;
end;

Randomize Procedure
Reposisi generator bilangan acak nilai berikutnya.
procedure Randomize;
Deskripsi:
Prosedur Randomize digunakan dalam hubungannya dengan theRandom function. Ini mereposisi generator bilangan acak dalam urutan  232 pseudo random numbers. Randomize menggunakan waktu dalam hari sebagai seed untuk reposisi, sehingga harus menyediakan metode yang dapat diandalkan untuk menciptakan suatu urutan angka yang tak terduga, bahkan jika itu adalah bagian dari urutan yang telah ditentukan.

Contoh kode: Jalankan kode ini dua kali untuk melihat efek Randomize
var
  int   : Integer;
  i     : Integer;

begin
  // Jika run 2 x, hanya yang pertama 5 nilai
  // mereposisi menjadi bagian yang berbeda dari pseudo sequence

  // dapatkan integer random number dari rentang 1..100
  ShowMessage('Fixed first 5 random numbers');
  for i := 1 to 5 do
  begin
    int := 1 + Random(100);    // Nilai 100 memberikan kisaran 0..99
    ShowMessage('int = '+IntToStr(int));
  end;

  // randomize untu reposisi
  Randomize;
  ShowMessage('');

  // dapatkan bilangan integer random dalam rentang 1..100
  ShowMessage('Random next 5 numbers');
  for i := 1 to 5 do
  begin
    int := 1 + Random(100);    // nilai 100 memberi kisaran 0..99
    ShowMessage('int = '+IntToStr(int));
  end;
end;

RandomRange Function
Generate bilangan random integer dalam kisaran disediakan.
function RandomRange ( const RangeFrom, RangeTo : Integer ) : Integer;
Deskripsi
Fungsi RandomRange menghasilkan sejumlah Integer acak dalam rentang RangeFrom to RangeToinclusively. Ini memberikan versi yang lebih baik dari fungsi unitRandom Sistem. Keduanya menggunakan urutan nomor pseudo random dari 232 nilai. Setiap kali menjalankan program, nilai-nilai yang dihasilkan akan sama, kecuali jika reposisi generator untuk bagian yang berbeda dari urutan menggunakan fungsi Randomize orRandSeed.

Contoh kode: Generate bilangan random dalam rentang yang sangat kecil.
var
  i : Integer;
begin
  
// Tampilkan 5 angka acak dalam kisaran 652-656
  for i := 1 to 5 do
    ShowMessage('Random number : '+IntToStr(
RandomRange(652, 656)));
end;

RandSeed Variabel
Reposisi generator bilangan acak nilai berikutnya.
var RandSeed : LongInt;
Deskripsi:
Variabel RandSeed digunakan dalam hubungannya dengan theRandom function. Ini mengubah seed yang digunakan Delphi untuk menghasilkan jangkauan 232 pseudo random numbers.

Contoh kode: Jalankan kode ini dua kali untuk melihat efek RandSeed
var
  int   : Integer;
  i     : Integer;
  hours, mins, secs, milliSecs : Word;

begin
  
// dapatkan random numbers menggunakan nilai default random seed
  ShowMessage('Fixed first 5 random numbers');
  for i := 1 to 5 do
  begin
    int := 1 + Random(100);    
// nilai 100 memberikan kisaran 0..99
    ShowMessage('int = '+IntToStr(int));
  end;
  
// Sekarang mengubah random seed dengan nilai millisecond
  
// dari waktu saat ini
  DecodeTime(now, hours, mins, secs, milliSecs);
  ShowMessage('');
  ShowMessage('Setting randSeed to value : '+IntToStr(milliSecs));
  ShowMessage('');
  
RandSeed := milliSecs;

  
// dapatkan integer random number dalam kisaran 1..100
  ShowMessage('Random next 5 numbers');
  for i := 1 to 5 do
  begin
    int := 1 + Random(100);    
// nilai 100 memberi rentang 0..99
    ShowMessage('int = '+IntToStr(int));
  end;
end;

0 comments: