hocam bu işlerde en temiz yntem keyleri değiştirmektir.. tek dizi üzerinden anlatayım.. :) a = ; diye atadığını varsay... sonra random olarak 0 ile 16 arasında bi 2 sayı üret, daha sonra bu indexlere sahip sayıları yer değiştir.. mesela 13, ile 8 geldi a ile a in değerlerini değiştir... Bu işlemi dngü ile bikaç kez tekrarla.. En hızlı ve ekonomik çzüm budur :) yoksa unique random sayı üretmek meşakkatli iş.. There are 10 types of people in the world. Those who knows binary and those who dont...

Bunu C ye aktarmak biraz problem işte hocam, yinede sağol deneyeceğim bakalım http://yigitdemirag.com

http://www.tahribat.com/Forum-C-Diziler-Hakkinda-Ufak-Bir-Soru-128447/ Sen hiç kaval çaldın mı?

selam, sordugun dogrultuda bir algoritma yazdim, ama cok iyi oldugu soylenemez random fonkisyonundan oturu yaklasik 25 saniyede sonuc veriyor.. artik kod optimizasyonunu sen yaparsin diye dusunuyorum, kolay gelsin #include <stdio. h>#include <stdlib. h>#include <unistd. h>#include <time. h>#include <stdbool. h>#define max 16int random16 ;int main { int a , b , c , d , rd ; int i, j, random; bool found = false; for (i=0; i<max; i++) { random = random16 ; for (j=0; j<i; j++) { if } if else rd = random; } for (i=0; i<max; i++) for (i=0; i<4; i++) return EXIT_SUCCESS;}int random16

Arkadaşlar elimizde hepsi int ve a , b , c , d olmak üzere toplamda 16 tane sayı var. Bende bunların hepsine 1 den 16 ya kadar random olarak birer sayı atamak istiyorum ancak nemli nokta bunlara atadığım sayıların eşit olmaması yani son sayı atandığında totalde bütün sayıların farklı olması. Bunu nasıl sağlayabilirim. Bir algoritma yazıyorum bu şekilde olmadığı zaman programın saatlerce belki günlerce çalışması gerekicek. http://yigitdemirag.com

: hocam bu işlerde en temiz yntem keyleri değiştirmektir.. tek dizi üzerinden anlatayım.. :) a = ; diye atadığını varsay... sonra random olarak 0 ile 16 arasında bi 2 sayı üret, daha sonra bu indexlere sahip sayıları yer değiştir.. mesela 13, ile 8 geldi a ile a in değerlerini değiştir... Bu işlemi dngü ile bikaç kez tekrarla.. En hızlı ve ekonomik çzüm budur :) yoksa unique random sayı üretmek meşakkatli iş.. yine verim yok 0-16 arasında ürettiğin sayılar sürekli birbirini değiştiricektir.. http://yigitdemirag.com

up? http://yigitdemirag.com

nce 1 kaynak dizi oluştur sıralı olsun farketmez 1 den 16 ya kadarsonra random olarak bu diziden 4erli seçimler yaparak alt kümeleri oluştur... Daha nce benzeri bir konu açılmıştı... Ya da arkadaşın dediği gibi bir karıştırma prosedürü yaz... kaynak diziyi "karıştır" 16 kere karıştır sonra bu diziden istedğin şekilde 4 elemanlı alt küme oluştur... Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

Bir değişken daha tanımla ya da bir dizi. Bu değişkenin içini 1'den 16'ya kadar sırasıyla sayıları doldur. Random değerini sürekli olarak bu son tanımladığımız değişkenin içerdiği sayı miktarı ile çağır. Daha sonra çağrılmış olan değeri ise sil. 10 11 gibi çift haneli sayılarda problem çıkacağından hex kullanabilirsin. C bilmiyorum fakat şyle rnek verebilirim; s16="0123456789ABCDEF"; s16. lenght //<=1'den 16'ya kadar sayılarımızı içeren değişkenin uzunluğunu veren komudumuz x=random(s16. lenght); a = Math(s16 +1); //+1 yapıyorum çünkü hex'te F değeri 15'e karşılık gelir, 0 değerinide bulunmakta. 0 değil bize en az 1 gerekli olduğundan sürekli +1 yapmalıyız //b , c , d dizilerinede atama yapılmalı her biri 4 değer alacak çünkü. Küçük bir sayaç ve if case ise çzersin bu noktayı s16=s16. replace(s16 ,''); //Çekmiş olduğumuz değeri silelim //atamalar tamamlandıktan sonra dngüden çıkalım. Sadece bi imza..

: NmC bunu yazdı: hocam bu işlerde en temiz yntem keyleri değiştirmektir.. tek dizi üzerinden anlatayım.. :) a = ; diye atadığını varsay... sonra random olarak 0 ile 16 arasında bi 2 sayı üret, daha sonra bu indexlere sahip sayıları yer değiştir.. mesela 13, ile 8 geldi a ile a in değerlerini değiştir... Bu işlemi dngü ile bikaç kez tekrarla.. En hızlı ve ekonomik çzüm budur :) yoksa unique random sayı üretmek meşakkatli iş.. yine verim yok 0-16 arasında ürettiğin sayılar sürekli birbirini değiştiricektir Nasıl yok hacı :) 4-5 tur dndükten sonra zaten karman çorman olacaktır o seri.. while'in de 5 tur dnmesi mili saniye mertebelerinde olacak.. Hem hızlı hem temiz.. :) There are 10 types of people in the world. Those who knows binary and those who dont...