Şimdi Ara

Python ile ilgili yardim.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
9
Cevap
0
Favori
505
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Python da yeniyim ve elimde soyle bir odev var..9 tane 3 farkli renkte topun oldugu bir posetten geri koymamak sartiyla uc top sececegim.bu islemi 100 defa tekrarlayacagim ve sonucta kac defa her 3 cekiste ayni renklerin geldigini bulmam gerekiyor.

    sorunum var 12. toptan sonra(4. cu tekrardan itibaren diyeyim) kodun tekrar basa donmemesi..continue komutunu kullaniyorum ama ise yaramadi..yardim edebilecek olan varmi? ornegin ilk 3 cekiste ayni renk gelirse bu 1 sefer sayilacak..toplamda en az 100 cekis gerekiyor..kalantop=0 olduktan sonra tekrar toplari geri koyup islemi tekrarlayacagim..umarim anlatabilmisimdir



    import random

    toplar = [ "mavi","mavi","mavi","rod","rod","rod","gron","gron","gron"]

    kalantop=9
    ayni=0
    farkli=0

    for n in range(1,4):

    cekis1= random.choice(toplar)
    toplar.remove(cekis1)
    kalantop=kalantop-1

    cekis2= random.choice(toplar)
    toplar.remove(cekis2)
    kalantop=kalantop-1

    cekis3= random.choice(toplar)
    toplar.remove(cekis3)
    kalantop=kalantop-1

    if cekis1==cekis2==cekis3:
    ayni=ayni+1

    else:
    farkli=farkli+1

    print(ayni,farkli,cekis1,cekis2,cekis3,kalantop)

    if kalantop==0:
    print("hic top kalmadi")







  • yerinde olsam şöyle bi yol izlerdim.

    for deneme_sayisi in range(0,100):
    [tab] for n in range(1,4):
    [tab][tab] içteki loop içinde top çekme işlemini yaparsın.


    [tab] yeni denemeden önce torbayı tekrar doldur.

    print(ayni)



    < Bu mesaj bu kişi tarafından değiştirildi makmakmakxd -- 16 Kasım 2019; 22:16:3 >
  • Soruyu anladım mı emin değilim:
    3 top çekiyorum bu bir, 3 top daha çekiyorum bu iki, 3 top daha çekiyorum bu üç, top kalmadı, topları geri yerine koyuyorum, 3 top çekiyorum bu dört... 100'e kadar devam edecek.
    böyle mi?

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Olasilik hesabiyla anlatsam belki daha anlaşılır olur.9 top var 1.sefer 3 top cekiyorum geri koymuyorum 2.sefer 3 top daha çekiyorum yine geri koymadan geri kalan 3 topu çekiyorum 3.seferde.. Hepsi bittiginde tekrar hepsini geri koyup ayni işlemi tekrarlıyorum. Bunu 100 defa tekrarlayacagim.. Bu 100 defada kac kere ayni renkleri bulurum. Sonra cikan sonucu normal olasılık hesabiyla karsilastiracagim

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Her renkten eşit sayıda mı var poşette bunu anlamadım?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • İlk yazdığımı tekrar okur musun? dört dedğim yer doğru mu? yoksa orası daha ikinci tur mu oluyor?

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Olasılıkta 9 toptan 3 çekiyosun, daha sonra çektiğin topları geri koymadan 6 toptan 3 çekiyosun... Böyle gidiyor ve farklı olasılıkları oluyor çünkü torbadaki renk sayısı değişiyor. İlk çekişte 1/3'ken oran, ikinci çekişte bu değişiyor. Ancak senin kodunda nasıl değişiyor onu anlamadım. Kalantop=9 deyip her çekişte azaltmışsın ancak bunun çekilen renklerle herhangi bir alakası yok.

    Yani 3 mavi 3 yeşil 3 kırmızı varsa, ilk çekişten sonra ben neleri çektiysem o renklerden azaltmalıyım. Sen ise toplam top sayısını azaltıyorsun sadece. Doğru bir çözüm olmuyor yani.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Ne yaptığımı anlatayım:
    random kullanmadan önce seed() çağırmak lazım.
    3 top aynı mı bulmak için set kullandım. bir set'e aynı elemanı ekleyemezsin, dolayısıyla add() hiçbir şey yapmaz. o halde 3 add() sonra set'in boyu 1 ise 3 top da aynıdır hesabıyla çözdüm. Ayrıca chioce() yerine randrange() metodu daha uygun geldi, yani direkt indexler üzerinden hareket ettim.
    toplar listesi her boşaldığında tekrar atama yaptım (list comprehension kullandım, şart değil eğer zor gelirse)

    import random

    toplar = []
    ayni = 0
    random.seed()

    for n in range(0, 100):
    if not toplar:
    toplar = [t for t in ['a', 'b', 'c'] for r in [1,2,3]]
    cek = set()
    for k in [1,2,3]:
    top = random.randrange(len(toplar))
    cek.add(toplar[top])
    del toplar[top]
    if len(cek) == 1:
    ayni += 1

    print("Toplam ayni renk sayisi: {}".format(ayni))



    < Bu mesaj bu kişi tarafından değiştirildi seyfi84 -- 17 Kasım 2019; 11:26:10 >
    < Bu ileti mini sürüm kullanılarak atıldı >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.