birden çok rasgele sayı üretmen

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tazeusta
Üye
Mesajlar: 8
Kayıt: 28 Ara 2011 01:04

birden çok rasgele sayı üretmen

Mesaj gönderen tazeusta »

slmlar.ufak bir programla uğraşıyorum.delphi5 kullanıyorum.şöyle bir sorum olacak
var
Form1: TForm1;
a,b:integer;
c:string;
d:string;
implementation

{$R *.DFM}
procedure TForm1.toplam (x,y:integer;z,t:string);
var
a:integer;
b:integer;
c:string;
begin
a:=Random(10)+20;
b:=Random(10)+20;
c:='+_________';
memo1.Lines.Add(FloatToStr(a));
memo1.Lines.Add(FloatToStr(b));
memo1.Lines.Add(c);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
toplam(a,b,c,d);
end;

end.

şeklinde rasgele bir toplama işemi hazırlayacak bir kod yazdım bunu bir sayafaya farklı değerlerle çağırmak istiyorum.örneğin ödev kağıdan 15 tane farklı rakalmlarla işlem yazacak yardımcı olursanız sevinirim.acemiliğimizin kusuruna bakmayın.slmlar.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: birden çok rasgele sayı üretmen

Mesaj gönderen mkysoft »

random komutundan önce randomize fonksiyonunu çağırısanız her seferinde farklı sayılar türetilir.
tazeusta
Üye
Mesajlar: 8
Kayıt: 28 Ara 2011 01:04

Re: birden çok rasgele sayı üretmen

Mesaj gönderen tazeusta »

birisi lütgen yardın etsin yoksa bu aleti KIRACAM.
arkadaşın verdiği randomize komutunu bir kez yazdım doğru olarak çalıştı(for t:=1 to 5 do toplam(a,b,c,d) dediğimde 5 tane farklı toplama işlemi vermişti) fakat aynı kodlarla yeniden yazıyorum bu kez aynı sayılarla yapıyor.slmlar
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

Re: birden çok rasgele sayı üretmen

Mesaj gönderen secgin »

merhaba

randomize kullandıysanız bi sorun olmaması gerek.

Kod: Tümünü seç

for t:=1 to 5 do toplam(a,b,c,d)
"toplam" prosedürüne gönderdiğiniz 4 parametre var bunların neden kullandınız çözemedim, burda gönderdiğiniz a,b,c,d değişkenlerini prosedür içerisinde tekrar tanımlamışsınız. Aşağıdaki gibi örneğinizi düzenledim.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
procedure ToplaYaz;
var
  sayi1, sayi2 : Integer;
begin
  Randomize;
  sayi1:=Random(10)+20;
  sayi2:=Random(10)+20;
  memo1.Lines.Add(FloatToStr(sayi1));
  memo1.Lines.Add(FloatToStr(sayi2));
  memo1.Lines.Add('+_________');
  memo1.Lines.Add(IntToStr(sayi1+sayi2));
  memo1.Lines.Add('');
end;
var
  i : byte;
begin
  for i:=0 to 5 do ToplaYaz;
end;
İyi çalışamalar.
tazeusta
Üye
Mesajlar: 8
Kayıt: 28 Ara 2011 01:04

Re: birden çok rasgele sayı üretmen

Mesaj gönderen tazeusta »

proglama konusunda bilgi sahibi değilim ama kopyal ypıştırdada sorun yaşadığımı görünce artık kendimden umudu kestim.
Yukarıdaki kodu çalıştırdığımda sonuç fartklı değil aynı çıkıyo aşağıda çalışan programın sonuçları :
Memo1
22
21
+_________
43

22
21
+_________
43

22
21
+_________
43

22
21
+_________
43

22
21
+_________
43

22
21
+_________
43
biris lütfen yardımm etsin
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: birden çok rasgele sayı üretmen

Mesaj gönderen orhancc »

secginin kodunda aralık az belki ondan yapıyordur, çalışan kod

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    procedure ToplaYaz;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ToplaYaz;
var
  sayi1, sayi2 , toplam: Integer;
begin
  Randomize;
  sayi1 := Random(100);//0-100 arasındaki sayılardan seçer
  sayi2 := Random(100);
  memo1.Lines.Add(FloatToStr(sayi1));
  memo1.Lines.Add(FloatToStr(sayi2));
  memo1.Lines.Add('+_________');
  toplam := sayi1+sayi2;
  memo1.Lines.Add(Format('%d' , [toplam] ));
  memo1.Lines.Add('');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : byte;
begin
  for i:=0 to 5 do
    begin
      ToplaYaz;
    end;
end;

end.
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

Re: birden çok rasgele sayı üretmen

Mesaj gönderen secgin »

evet orhancc nin dediği gibi sayı aralığı az aynı sayı üretme ihtimali yüksek fakat tazeusta nın son yazdığı mesajdaki gibi sayi1 ve sayi2 değerini sürekli aynı üretmemesi gerekli. Kodu test ederek göndermişdim.
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: birden çok rasgele sayı üretmen

Mesaj gönderen orhancc »

secgin kodda sorun yok ama tekrarlama olasılığı fazla sadece ben de de 3-4 kere geldi aynı değerler
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

Re: birden çok rasgele sayı üretmen

Mesaj gönderen secgin »

0 ile 10 arasında rast gele üretilen değer 20 eklenerek sayı üretiyor tazeusta nın son mesajındaki gibi sürekli aynı sayı üretmesi mantıksız kodda sorun var demedim sürekli aynı sayıları vermesinde sorun var, random da verilen aralığın 0 ile 10 olması istenmiş olabileceğinden ben düzeltme gereğinde bulunmadım.
tazeusta
Üye
Mesajlar: 8
Kayıt: 28 Ara 2011 01:04

Re: birden çok rasgele sayı üretmen

Mesaj gönderen tazeusta »

saygıdeğer bu işe emeklerini vermiş uzman kardeşlerim.bu işin başında olduğumu biliyorum ama çok sıktı sizi de sıktım.ama
son verilen kodda aynı sorun gözüküyor.bu seferde de 2. sayı hep aynı üstteki değişerek geliyor.çalıştığım bilgisayarla nete girdiğim farklı olduğu için şimdi ekreandaki sonucu ekleyemiyorum ama program çalışınca 1.sayı değişiyor 2.sayı hep aynı üretiliyor.yalnız bir nokta var bendeki program delphi5.yukarıda kodu paylaşan arkadaşım uses kısmında variants kullanmış.
program variants la çalışmıyor onu silince çalışıyor belki hata buradadır yardımlşarınız için teşekkürler.inşallah birgün bende birilerine yardımcı olabilirim.slmlar.
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

Re: birden çok rasgele sayı üretmen

Mesaj gönderen secgin »

delphi 5 hiç kullanmadım delphi 7 kullanıyorum verdiğim kod delphi 7 de çalışıyor delphi 5 için birşey söyleyemiyorum ama şunu deneyebilirsin ilk Random komutundan önce Randomize kulandık. 2. Randomdan öncede Randomize yazarak deneyebilirmisiniz sonuç ne olacak.
Cevapla