Randomize Aynı sayıları üretyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Randomize Aynı sayıları üretyor

Mesaj gönderen Fatih! »

Kod: Tümünü seç

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 :roll:
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »


Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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.

Kolay gelsin.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

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
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

birkaçı aynı. randomrangede aynı yoldan gidiyor iyisimi @husonet'in yaptığını yapmak :)
Allah Razı Olsun. Herkese iyi çalışmalar
cebrail
Üye
Mesajlar: 24
Kayıt: 09 May 2004 03:52
Konum: Ankara

Mesaj gönderen cebrail »

Merhaba,

Benimde başıma aynı şey gelmişti. Ama randomize komutunu döngü dışında kullanınca hiç bir sorun kalmıyor.

İyi çalışmalar...
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

zaten döngü dışında
cebrail
Üye
Mesajlar: 24
Kayıt: 09 May 2004 03:52
Konum: Ankara

Mesaj gönderen cebrail »

Merhaba,

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)

iyi çalışmalar...
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

delphi 2005te aynı maalesef.
test ettim onayladım :roll:
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

ben yandım eller yanmasın :) işte çözüm

Kod: Tümünü seç

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;
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

Merhabalar,

Sanırım Aşağıdaki Kod Tam istediğiniz Gibi .....

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));


Çalışmalarınızda Başarılar ....
Cevapla