Var
i:integer;
SAYILAR:Array [1..20] Of integer;
begin
Randomize;
for i:=1 to 20 do
Sayilar[I]:=Random(100);
Dizide helirtiğim miktar kadar bir birinden farklı rakamlar üretmem gerekiyor ama ne hikmetse benzer sayılarıda üretiyor.
bir çaresi var mı yoksa kendi randomize fonksiyonumu yazmak mı gerekecek
evet öyle yapar, onun öncesinde bir kod daha çalıştırmak gerekiyordu vs. Tam hatırlamıyorum. Ben hep RandomRange'i kullanıyorum. Hangi aralıklarda sayı üreteceğini veriyorsun, o hallediyor.
s.a.
nasıl yani randomize kullandığın halde tüm sayıları aynı mı üretiyor yoksa 20 sayıdan bir kaçı aynı mı oluyor.
eğer bir kaçı aynı oluyorsa onu kodla bi şekilde kontrol etmen lazım.
kolay gelsin
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Ben döngü içinde olarak görmüşüm. Delphi 7 de bu kodu kullanırken randomize döngü içindeyse benzer sayılar üretiyodu. Ama delphi 2005 de normal çalışıyor. (her iki durumdada)
var
i ,Sayi: Integer;
AList : TStringList;
Sayilar : array [1..20] of integer;
begin
AList := TStringList.Create;
Randomize;
with AList do
begin
repeat
Sayi:=Random (22);
if (IndexOf (IntToStr (Sayi)) < 0) and (Sayi <> 0) then
Add (IntToStr (Sayi));
until Count = 20;
for i := 0 to Pred (Count) do
Sayilar [i+1] := STRTOINT(AList[I]);
Free;
end;//with
for i := 1 to 20 do
ListBox1.Items.Add(INTTOSTR(Sayilar [i]));
end;
Function SayiUret(RandMin, RandMax: Integer): Integer;
Var
RandRange: Integer;
RandValue: Integer;
Begin
If RandMax <= RandMin Then
Begin
Result := RandMin;
Exit;
End;
Randomize;
RandRange := RandMax-RandMin;
RandValue := Random(RandRange);
Result := RandValue + RandMin;
End;
Kullanımı : Label1.Caption:=IntToStr(SayiUret(0,100));