• 15-02-2020, 21:05:02
    #1
    Merhaba Arkadaşlar başlık biraz karışık oldu ama yapacağım işlem için kafamın durduğu yerlerden birisindeyim aklımda birkaç fikir var ama el elden üstündür diyerek size sormak istedim. Senaryo şu;


    Bir buton var ve butona her 100 tıklamada 30 kere EVET, 70 kere HAYIR yazısı çıkmasını istiyorum. Bu yüzde değerlerini değiştirebilmeliyim ama genel mantık bu şekilde nasıl bir yol izlenmeli ?

    Cevaplar için teşekkürler.
  • 15-02-2020, 21:07:59
    #2
    Büyük ihtimalle çok çok daha basit yolları olacaktır ancak ben aklıma gelen ilk algoritmayı paylaşmak istedim, belki işe yarar;

    Bir listeye 30 adet "evet" , 70 adet "hayır" elemanı eklenir ve butona basıldığında bu listeden rastgele bir eleman seçerken, bu elemanı da listeden siler.
  • 15-02-2020, 21:14:48
    #3
    Aklıma gelen:
    Rastgele sonuç çekmek için rand() fonksiyonu kullanabilirsiniz.
    Evet/hayır için veritabanı oluşturursunuz butona her tıklandığında (-) değer post edilir, sayı düşmüş olur.
    • Big_Turk
    Big_Turk bunu beğendi.
    1 kişi bunu beğendi.
  • 15-02-2020, 21:32:40
    #4
    Şöyle bir şey mi istiyorsunuz? 3 ve 10 değerini 30 ve 100 gibi düşünün.

    https://jsfiddle.net/g0b37h2k/
  • 15-02-2020, 21:42:29
    #5
    Üyeliği durduruldu
    100 elemanlı bir diziye yuzde değişkenine girilen değer kadar true geri kalanına false değeri girilir.
    shuffle fonksiyonu ile dizi karıştırılır.

    Örnek;
    <?php
    $yuzde = 30;
    $dizi = [];
    for($i=0; $i<100; $i++) {
    $dizi[] = $i < $yuzde ? true : false;
    }
    shuffle($dizi);
    print_r($dizi);
    ?>
    Bu örneğin sonucunda rastgele indexlerde 30 tane true ve 70 tane false değerine sahip 100 tane elemanı olan bir dizi oluşturulur.
  • 16-02-2020, 02:40:01
    #6
    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    Merhaba Arkadaşlar başlık biraz karışık oldu ama yapacağım işlem için kafamın durduğu yerlerden birisindeyim aklımda birkaç fikir var ama el elden üstündür diyerek size sormak istedim. Senaryo şu;


    Bir buton var ve butona her 100 tıklamada 30 kere EVET, 70 kere HAYIR yazısı çıkmasını istiyorum. Bu yüzde değerlerini değiştirebilmeliyim ama genel mantık bu şekilde nasıl bir yol izlenmeli ?

    Cevaplar için teşekkürler.
    Toplam kaç sonuç ve yüzde kaçının olumlu olduğunu girdiğinizde,

    aşağıdaki kod tamamen rasgele olacak şekilde EVET-HAYIR demeye başlar.

    Önce EVET biterse, rasgelelik biter hep HAYIR der taaa ki toplam sayıya erişene kadar.

    Önce HAYIR biterse de EVET demeye başlar.

    <?php
    
    $yuzde = 30;
    
    $toplam = 77;
    
    
    $olumlu = round( $yuzde * $toplam / 100 );
    
    $olumsuz = ( $toplam - $olumlu ) || 0;
    
    
    for ($i=0; $i <= $toplam ; $i++)
    {
    $is = !! round( (float)rand() / (float)getrandmax() );
    
    if( ( !! $is && $olumlu >= 1 ) || ( ! $is && $olumlu >= 1 && $olumsuz == 0 ) )
    {
    $olumlu--;
    echo "EVET </br>";
    }
    
    elseif( ( ! $is && $olumsuz >= 1 ) || ( !! $is && $olumlu == 0 && $olumsuz >= 1 ) )
    {
    $olumsuz--;
    echo "HAYIR </br>";
    }
    }

    yüzdeyle filan uğraşmayım derseniz

    <?php
    
    $olumlu = 30;
    
    $olumsuz = 70;
    
    $toplam = ( $olumlu + $olumsuz ) || 0;
    
    
    for ($i=0; $i <= $toplam ; $i++)
    {
    $is = !! round( (float)rand() / (float)getrandmax() );
    
    if( ( !! $is && $olumlu >= 1 ) || ( ! $is && $olumlu >= 1 && $olumsuz == 0 ) )
    {
    $olumlu--;
    echo "EVET </br>";
    }
    
    elseif( ( ! $is && $olumsuz >= 1 ) || ( !! $is && $olumlu == 0 && $olumsuz >= 1 ) )
    {
    $olumsuz--;
    echo "HAYIR </br>";
    }
    }
  • 16-02-2020, 12:40:06
    #7
    Teşekkür ederim arkadaşlar hepinizin cevapları kafamda birkaç yöntem çıkartmaya yetti. Tekrar teşekkürler.