• 07-04-2019, 03:35:55
    #1
    Merhaba değerli arkadaşlar,
    Önceden belirlediğim verileri yüzdeye(%) bağlı olarak ekrana yazma şansım varmıdır acaba ? Örnek ile anlatacak olursam;

    DEĞER - ORAN
    Değer0 - %5
    Değer1 - %20
    Değer2 - %30
    Değer3 - %45

    Ekranda %5 ihtimal ile Değer0 %20 ihtimal ile Değer1 %30 ihtimal ile Değer2 %45 ihtimal ile de Değer3
    yazdırmak istiyorum. Nasıl bir yol izlemeliyim ?



    Konuyu çok geç açtığım için gözden kaçmış olabilir. Konu günceldir. Bilgili arkadaşların yorumlarını bekliyorum.
  • 07-04-2019, 16:25:02
    #2
    Zor bir işleme benziyor hocam umarım bilgili bir arkadaş size yardımcı olur.
  • 07-04-2019, 17:58:34
    #3
    Merhaba,

    %lik dilimleri neye göre oluşturuyorsunuz. Örneğin iki kayıtlı kullanıcım var birine daha yüksek oran diğerine daha düşük oran veriyorum kullanıcının kayıt tarihlerine bakarak sistemde bulunan bütün kullanıcıları alır kullanıcıya session['oran'] oluştururum oran değerini ajax ile her saniye kontrol ederek veya sisteme yeni kullanıcı giriş yaptığında kontrol ederek çözülebilir.
  • 07-04-2019, 18:04:11
    #4
    hasanbugra adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    %lik dilimleri neye göre oluşturuyorsunuz. Örneğin iki kayıtlı kullanıcım var birine daha yüksek oran diğerine daha düşük oran veriyorum kullanıcının kayıt tarihlerine bakarak sistemde bulunan bütün kullanıcıları alır kullanıcıya session['oran'] oluştururum oran değerini ajax ile her saniye kontrol ederek veya sisteme yeni kullanıcı giriş yaptığında kontrol ederek çözülebilir.
    Cevabınız için teşekkür ederim hocam. Yüzdelik dilimleri manuel belirleyeceğim, her hangi bir şeye bağlı olmayacak. (üye vs.)

    Tek yapmak istediğim, var olan 5 değeri ihtimal ile doğru orantı olarak rastgele göstermek.
    DEĞER1, DEĞER2 diye iki tane değer düşünün. İkisinden biri ekranda görünecek. Ama orana bağlı olarak görünecek. Yani %80 ihtimal ile DEĞER1 yazacak, %20 ihtimal ile DEĞER2
  • 07-04-2019, 19:34:38
    #5
    Üyeliği durduruldu
    $degerler = array("deger1" => 30, "deger3" => 50, "deger2" => 20);
    şeklinde bir dizi yapısı üzerinden sıralamak isterseniz
    arsort($degerler);
    veya küçükten büyüğe
    asort($degerler);
  • 07-04-2019, 19:42:39
    #6
    <?php
    $array = array();
    $deger1 = "Değer 1";
    $ihtimal1 = 5;
    $deger2 = "Değer 2";
    $ihtimal2 = 25;
    $deger3 = "Değer 3";
    $ihtimal3 = 20;
    $deger4 = "Değer 4";
    $ihtimal4 = 15;
    $deger5 = "Değer 5";
    $ihtimal5 = 35;
    $toplamoran = 100;
    
    $j = 1; 
    
    if ($j <= $toplamoran){
    	for ($i = 1; $i <= $ihtimal1; $i++){
    		$array[$j] = $deger1;
    		$j++;
    	};
    
    	for ($i = 1; $i <= $ihtimal2; $i++){
    		$array[$j] = $deger2;
    		$j++;
    	};
    	for ($i = 1; $i <= $ihtimal3; $i++){
    		$array[$j] = $deger3;
    		$j++;
    	};
    	for ($i = 1; $i <= $ihtimal4; $i++){
    		$array[$j] = $deger4;
    		$j++;
    	};
    	for ($i = 1; $i <= $ihtimal5; $i++){
    		$array[$j] = $deger5;
    		$j++;
    	};
    }
    
    
    shuffle($array); //dizideki değerleri rastgele sıralıyoruz
    
    
    $rastgelesayi = rand(0,$toplamoran-1); // 0 ile toplam oran arasından rastgele bir sayı seçiyoruz
    
    
    $secilenarray = $array[$rastgelesayi]; // rastgele sıralanmış dizideki rastgele belirlediğimiz değeri alıyoruz
    
    
    echo "İhtimal oranına göre seçilen değer: ".$secilenarray;
    
    ?>
  • 07-04-2019, 21:41:46
    #7
    Incognito adlı üyeden alıntı: mesajı görüntüle
    $degerler = array("deger1" => 30, "deger3" => 50, "deger2" => 20);
    şeklinde bir dizi yapısı üzerinden sıralamak isterseniz
    arsort($degerler);
    veya küçükten büyüğe
    asort($degerler);
    Mesajınız için teşekkür ederim.

    masumm adlı üyeden alıntı: mesajı görüntüle
    <?php
    $array = array();
    $deger1 = "Değer 1";
    $ihtimal1 = 5;
    $deger2 = "Değer 2";
    $ihtimal2 = 25;
    $deger3 = "Değer 3";
    $ihtimal3 = 20;
    $deger4 = "Değer 4";
    $ihtimal4 = 15;
    $deger5 = "Değer 5";
    $ihtimal5 = 35;
    $toplamoran = 100;
    
    $j = 1;
    
    if ($j <= $toplamoran){
        for ($i = 1; $i <= $ihtimal1; $i++){
            $array[$j] = $deger1;
            $j++;
        };
    
        for ($i = 1; $i <= $ihtimal2; $i++){
            $array[$j] = $deger2;
            $j++;
        };
        for ($i = 1; $i <= $ihtimal3; $i++){
            $array[$j] = $deger3;
            $j++;
        };
        for ($i = 1; $i <= $ihtimal4; $i++){
            $array[$j] = $deger4;
            $j++;
        };
        for ($i = 1; $i <= $ihtimal5; $i++){
            $array[$j] = $deger5;
            $j++;
        };
    }
    
    
    shuffle($array); //dizideki değerleri rastgele sıralıyoruz
    
    
    $rastgelesayi = rand(0,$toplamoran-1); // 0 ile toplam oran arasından rastgele bir sayı seçiyoruz
    
    
    $secilenarray = $array[$rastgelesayi]; // rastgele sıralanmış dizideki rastgele belirlediğimiz değeri alıyoruz
    
    
    echo "İhtimal oranına göre seçilen değer: ".$secilenarray;
    
    ?>
    Mesajınız için teşekkür ederim. Sayenizde hallettim.
    Sanırsam ihtimal adedi kadar array oluşturuyor ve arasından rastgele bir tanesini ekrana yazdırıyor. Doğal olarak en çok olan değerin seçilme ihtimali de yüksek oluyor. Doğru yorumladım mı acaba ?
  • 07-04-2019, 21:50:48
    #8
    KadirKAYA adlı üyeden alıntı: mesajı görüntüle
    Mesajınız için teşekkür ederim.



    Mesajınız için teşekkür ederim. Sayenizde hallettim.
    Sanırsam ihtimal adedi kadar array oluşturuyor ve arasından rastgele bir tanesini ekrana yazdırıyor. Doğal olarak en çok olan değerin seçilme ihtimali de yüksek oluyor. Doğru yorumladım mı acaba ?
    Aynen öyle.
    Boş bir dizinin içerisine ihtimal kadar seçenekleri ekliyor. Sonra diziyi karıştırıp rastgele bir değeri seçiyor.