Çözüldü Set elemanları hep aynı sırayla printleniyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Eray Temel

Femtopat
Katılım
20 Temmuz 2022
Mesajlar
11
Daha fazla  
Cinsiyet
Erkek
Ekte belirttiğim kısımda for döngüsü ile her çalıştırdığımda küme içindeki elemanların rastgele sıralanması gerekiyor fakat hep aynı sonucu veriyor, sıralamayı değiştirmiyor. Nereyi kaçırıyorum?

Ekran görüntüsü 2023-05-24 144708.png
 
Son düzenleyen: Moderatör:
Çözüm
Aynı sonucu almanızın sebebi Jupyter Notebook kullanıyor olmanız. Aynı değişkenleri kullanıp duruyorsunuz. O yüzden hash'leri değişmiyor.
Benzer şeyi integerlarda da görebilirsiniz. 64 bit cihazlar için 2^61 +-1 falan olması lazım sıfırlandığı yer.
Hash sıralamasını da bitlere göre yapıyor herhalde. Dokümantasyonda görmedim, internette de pek bir şey bulamadım.

Yani tüm dosyayı sıfırdan çalıştırırsanız farklı sonuç elde edeceksiniz. Çünkü string kullanıyorsunuz. Çünkü stringlerin hash'leri değişir.

Python:
random.shuffle(renk)
1684932825293.png


Random kütüphanesini kullanmamışsın.
Nasıl kullansın? Örnek verir misiniz?
Python'da set elemanları bastırılırken rastgele bir sırada bastırılır sıralama işlemi yapılmadığı için. Bunun yerine tuple ya da list kullanabilirsiniz.

Amacım elemanları rastgele sıralamak değil aslında
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
bu videonun 6.27. dakikasında neden olmuş da bende olmamış onu anlamlandıramadım.
 
Amacım elemanları rastgele sıralamak değil aslında
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
bu videonun 6.27. dakikasında neden olmuş da bende olmamış onu anlamlandıramadım.
Normal bir şey. Sende de sırasız gelmiş farkına varırsan. Sen jupyter kullandığın için runtimela alakalı bir olay olabilir emin değilim.
 
Aynı sonucu almanızın sebebi Jupyter Notebook kullanıyor olmanız. Aynı değişkenleri kullanıp duruyorsunuz. O yüzden hash'leri değişmiyor.
Benzer şeyi integerlarda da görebilirsiniz. 64 bit cihazlar için 2^61 +-1 falan olması lazım sıfırlandığı yer.
Hash sıralamasını da bitlere göre yapıyor herhalde. Dokümantasyonda görmedim, internette de pek bir şey bulamadım.

Yani tüm dosyayı sıfırdan çalıştırırsanız farklı sonuç elde edeceksiniz. Çünkü string kullanıyorsunuz. Çünkü stringlerin hash'leri değişir.

Python:
random.shuffle(renk)
1684932825293.png


Random kütüphanesini kullanmamışsın.
Nasıl kullansın? Örnek verir misiniz?
 
Son düzenleme:
Çözüm
Aynı sonucu almanızın sebebi Jupyter Notebook kullanıyor olmanız. Aynı değişkenleri kullanıp duruyorsunuz. O yüzden Hash'leri değişmiyor.
Benzer şeyi integerlarda da görebilirsiniz. 64 Bit cihazlar için 2^61 +-1 falan olması lazım sıfırlandığı yer.
Hash sıralamasını da bitlere göre yapıyor herhalde. Dokümantasyonda görmedim, internette de pek bir şey bulamadım.

Yani tüm dosyayı sıfırdan çalıştırırsanız farklı sonuç elde edeceksiniz. Çünkü string kullanıyorsunuz. Çünkü stringlerin Hash'leri değişir.

Eki Görüntüle 1791374

Nasıl kullansın? Örnek verir misiniz?

Çok teşekkür ederim.
 
Başta ardışık sıralı sayıları öyle yapıyor gibi gelmişti ama değil. Gerçi orada da kendince bir sıra var. Teki kayıyor. 1 milyon tanede bile kabaca 20 deneme oluyor. Ama sıralama sıfırdan başlarsa kaymıyor. En azından kendimce yaptığım denemelerde.
Olayı bilen varsa etiketleyip paylaşırsa sevinirim.

Kod:
import random

begin = 0
end = 100


def f():
    first = random.randint(begin, end)
    second = random.randint(begin, end)

    a_set = set(range(first, second))
    a_list = [x for x in a_set]
    a_list2 = list(range(first, second))

    return a_list, a_list2

for i in range(100):
    x, y = f()
    if x != y:
        print(x)
        print(y)

Kod:
[64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 61, 62, 63]
[61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75]
[32, 33, 34, 35, 36, 37, 30, 31]
[30, 31, 32, 33, 34, 35, 36, 37]
[64, 65, 66, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]
[54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66]
[32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 29, 30, 31]
[29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]
[64, 62, 63]
[62, 63, 64]
[32, 25, 26, 27, 28, 29, 30, 31]
[25, 26, 27, 28, 29, 30, 31, 32]
[32, 33, 34, 35, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
[22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
[72, 73, 71]
[71, 72, 73]
Kod:
import random

begin = 1
end = 100000


def f():
    first = 0
    second = random.randint(begin, end)

    while first == second:
        first = random.randint(begin, end)
        second = random.randint(begin, end)

    if first > second:
        first, second = second, first

    a_set = set(range(first, second))
    a_list = [x for x in a_set]
    a_list2 = list(range(first, second))

    return a_list, a_list2

for i in range(100):
    x, y = f()
    if x != y:
        print(x)
        print(y)
 

Yeni konular

Geri
Yukarı