(6)
işin içinden çıkamadığım C# sorusu
C#'ta random'a nasıl müdahale edebiliriz? aşağıda bir dizi oluşturup içine isimler yazdık. random rasgele bi sayı üretip o sayı dizide hangi indise aitse onu ekrana yazdırıyor. biz kendi adımızın gelmesini engellemek istiyoruz. misal benim adım serkan. if yapısı ve döngüleri kullanmadan nasıl serkan
C#'ta random'a nasıl müdahale edebiliriz? aşağıda bir dizi oluşturup içine isimler yazdık. random rasgele bi sayı üretip o sayı dizide hangi indise aitse onu ekrana yazdırıyor. biz kendi adımızın gelmesini engellemek istiyoruz. misal benim adım serkan. if yapısı ve döngüleri kullanmadan nasıl serkan adının gelmesini engellerim?
*ismim dizini ilk veya son indisi olamaz. ve dizide herhangi bi değişiklik yapmamam lazım.
string[] dizi = { "ahmet", "mehmet", "serkan", "deniz", "murat", "tolga", "salih" };
Random rast = new Random();
int sayi = rast.Next(0, dizi.Length);
Console.WriteLine(dizi[sayi]);
Console.ReadLine();
0
Adinizin sirasi belliyse (adinizin sirasi belli degil seklinde bir kriter yok), mesela adinizin 5. sirada olacagindan eminseniz:
1) 5. siradan onceki isimlerden rastgele bir tane secin.
2) 5. siradan sonraki isimlerden rastgele bir tane secin
3) secilen bu 2 isim arasindan rastgele bir tane secin
Isminiz dizinin ilk ve son indisi degil, dizide herhangi bir degisiklik yapmadik. Yazmadiginiz baska bir kriter varsa sorumluluk almam.
0
Öncelikle programın senin adını bilmesi lazım. Benim aklıma ilk gelen switch case oldu
Case "benim adım":
Bir şey yapma;
Case default:
Yazdır;
Ne dersin?
0
@crown ismin yeri değişebilir. o yüzden malesef bu yöntem olmuyor.
@badiparmagi sqitch case kullanılmasıda istenmiyor.
0
basitleştirilebilir muhtemelen ama şu formülü kullanabilirsin,
r = rastgele sayı
xi = isminin indeksi
len = dizinin eleman sayısı
0 ile len-1 aralığında rastgele r sayısını çektiğini düşünürsek... xi'yi atlamak için indeksi şöyle bulabilirsin.
indeks = ((r+xi-1)%(len-1) + (len-xi)) % len
ha şunu söyleyeyim... if ya da başka çözüm kullanmak çok çok daha makul çözümdür.(if düşmanı değilsen)
örnek tablo
xi = 2, len = 5
r indeks
___________
0 -> 4
1 -> 0
2 -> 1
3 -> 3
0
bu bi ödev falan mı? if ya da döngü yapısı kullanmamanın amacı ne? ismin dizide ilk veya son indiste olmayacak. peki arada nerede olacağını bilecek misin yoksa her yerde olabilir mi?
0
string[] dizi1 = dizi.Where(q => q != "serkan").ToArray();
sonra Random la geri kalanını kendin yazarsın.
0