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.
Koşullu olasılık hesaplatma mantığı nasıl kurulmalı?
6
●174
- 15-02-2020, 21:07:59Bü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:32:40Şö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Üyeliği durduruldu100 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:01Toplam kaç sonuç ve yüzde kaçının olumlu olduğunu girdiğinizde,Big_Turk adlı üyeden alıntı: mesajı görüntüle
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>"; } }
