Kusura bakmayın ben yanlış anlamışım. Aslına bakarsanız burada yapılmak istenen tam olarak nedir henüz anlayabilmiş değilim. Sanırım 3 kişi anlayabildiğine göre bende bir sorun var...:)
Biri bana 3 yaşındaki çocuğun anlayabileceği şekilde anlatabilir mi? Çünkü olaylara farklı açılardan baktığım için görünürdeki dikkatimi dağıtabiliyor. Hoş, bu vesileyle 'random.d''ye girdim ve "benzersiz" ile "her seferinde benzersiz" kavramlarını sayenizde irdeledim...
Bu arada ancak Erdem'in çözümünde eleman sayısı istenen sayıya eşit veya büyük olmaması gerekiyor. Eğer eşit olursa sıralama değişmezken büyük olduğu için doğal olarak çalışma zamanı hatası alıyoruz. Lütfen 'Erdem Test'i açınız. Ayrıca en benzersiz değerleri döndüren 'unpredictableSeed()' olduğunu gördüm. Ali hocam konuyu daha iyi irdeleyecektir. Denemek isteyenler için aşağıya kodu alıntılıyorum:
/*
rasgele.d (16.02.2012)
*/
import std.stdio, std.random;
int[] rasgeleDizi(int adet, bool benzersiz_ise) {
int[] dizi;
int[] rakamlar = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99];
if(benzersiz_ise)
{
foreach(i; randomSample(rakamlar, adet)) dizi ~= i;
}
else
{
for(int i = 0; i < adet; i++) dizi ~= uniform(0, 10);
}
return dizi;
}
void main() {
int i = 0;
int[] z = rasgeleDizi(10, false); // Zafer'in çözümü
int[] e = rasgeleDizi(10, true); // Erdem'in çözümü
int[] d = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]; // Digital Mars'ın çözümü
auto rnd = Random(unpredictableSeed);
/* @property uint unpredictableSeed();
A "good" seed for initializing random number engines.
Initializing with unpredictableSeed makes engines
generate different random number sequences every run.
*/
//writeln (rasgeleDizi(100, true));/* Erdem Test
foreach(r; randomCover(d, rnd))
{
writefln("%s\t%s\t%s", z[i], e[i], r);
i++;
}//*/
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]