Tam Sürümünü Görmek İçin : Randomize()
ben oyle birsey yapmak istiyorum ki
bir seferde bana 1ile48 arasında 12 tane random sayı uretsin( c++ builder da)
soyle
dizi[0]=4
dizi[1]=40;
dizi[2]=5;ü
gibi
aynı sayılar olmayacak hepsi birbirinden farkli olacak baska bir yol varmı yardımedin cok acıll simdidensaygılar
quasimodo
13/04/2008, 22:38
Bir seferde yanlizca bir tane random sayi uretebilirsin.
bkz rand()
tamam bir seferde bir sayı urettim fakat ben bu sayının aynı olmasını itemiyorum yanı 13 tane faklı sayı
quasimodo
13/04/2008, 22:53
#include <iostream>
int main()
{
int dizi[12], i;
for( i = 0; i < 12; ++i)
dizi[i] = std::rand();
for( i = 0; i < 12; ++i)
std::cout << dizi[i] << " ";
return 0;
}
c++ builder da yapıyorum ama
dizi[i] = std::rand(); burayı acıklasan yeter
http://forum.ceviz.net/rastgele-secilen-sayilarin-birbiri-ile-ayni-olmasini-engelleyen-program-t56410.html
hocam mantık dogru bende boyle yaptım ama olmuyor soyle birsey yapabilirmiyiz bir dizi olacak
int a[5]={1,2,3,4,5} ben random=1 uretecem sonra dizinin birince sirasındakini diziden atacam
açıkcası sorunu anlayamadım. Random olarak 1 üretecem dersen, random üretmemiş oluyorsun.
quasimodo
13/04/2008, 23:36
rand() bir fonksiyon ki bu fonksiyon 0 ile RAND_MAX arasinda
random bir sayi uretiyor. Sen bir dongunun icinde bu fonksiyonu
12 kere cagirip urettigi degeride diziye atarsan elinde 12 elemanli
rastgele sayilardan olusan bir dizi olur.
0 ile 48 arasinda sayi uretmek icinde soyle yapabilirsin
rand() % 49;
ya tamam 49 sayıdan rastgele 12 sayı urettim ama aynı sayılar gelebiliryorbunu nasıl engellerim
acehreli
14/04/2008, 03:52
Bunun klasik cozumu, sayilari bir diziye yerlestirdikten sonra dizi elemanlarini rastgele birbirleriyle degistirmektir. Sonucta o sayilari rastgele bir sirada elde edersin.
Ali
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(i=0;i<5;i++){
dizi[i]=random(10);
for(j=0;j<5;j++){
if(dizi[j]==dizi[i])
dizi[i]=random(10);
}
}
for(m=0;m<6;m++){
ListBox1->Items->Add(dizi[m]);
}
}
bunun neresi yanlış ya yine aynı sayıyı uretiyor..........
for(i=0; i<5; i++)
{
int k=random(10);
for(int j=0; j<5; j++)
while(k==dizi[j]) k=random(10);
dizi[i]=k;
}
Şeklinde yapabilirsin. Fakat bu oldukça basit bir yöntem ve sayılar rastgele geldiği için kimi zaman uzun süreler bekletebilir.
İlginç, kafam durgun olacak ki, hiçbir çalışan algoritma çıkaramadım yarım saattir :p. Bu algoritma çalışmıyor malesef.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.