wmaraci reklam

Karmaşık bir random sayı üretimi hk.

11 Mesajlar 1.417 Okunma
wmaraci reklam

mab1982 mab1982 WM Aracı Kullanıcı
  • Üyelik 26.06.2018
  • Yaş/Cinsiyet 42 / E
  • Meslek Mühendis
  • Konum Adana
  • Ad Soyad A** B**
  • Mesajlar 5
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
Merhaba arkadaşlar. Geç oldu ama sonunda yazılım işi yapan arkadaşlar sayesinde PHP öğrenmeye başladım. Çünkü parasıyla bile iş yaptıramadım. Ben de azimle çıktım yola ve bir çok işimi hallediyorum. Dolaylı yoldan oluyor ama sonuca varabiliyorum. İşimi görüyor yani. Tabi wmaraci sitesinin hakkını yememeliyim. Bu güzel kaynağın içinde bulunan her bireye ayrı ayrı teşekkür ediyorum. Sayenizde oluyor ne yapıyorsam.

Uzatmadan tıkandığım noktaya geleyim. Tıkanmasam zaten konu açmazdım emin olun.

Bir tablom var. Adı tablo ve şu şekilde;

s1 s2
--- ---
1 2
1 3
1 4
2 3

Bu tabloyu göz önünde bulundurarak random sayı gurubu üretmek istiyorum. Yani gördüğünüz tablo için söyleyecek olursam;
$s1 = rand(1,4)
$s2 = rand(1,4)
yaparak sayı üretmek ancak veritabanındaki tablo'da bulunan değerlerin dışında bir değer üretmek istiyorum. Yani... Örnek tabloya göre çıkacak sonuç

$s1 = 2
$s2 = 4

ya da

$s1 = 3
$s2 = 4

olabilir.
Random oluşturmak istediğim rakam hem veritabanındaki tablo'da kayıtlı olmayacak hem de $s1 ve $s2 eşit olmayacak.

Umarım derdimi anlatabilmiş ve fazla laf kalabalığı yapmamışımdır.
Üstatlarımdan yardımlarını bekliyorum.
Saygılarımla.
 

 

wmaraci
reklam

appiah5454 appiah5454 Web ve Desktop Yazılımlar Kullanıcı
  • Üyelik 18.10.2017
  • Yaş/Cinsiyet 38 / E
  • Meslek Web ve Masaüstü programlama
  • Konum İstanbul Anadolu
  • Ad Soyad B** A**
  • Mesajlar 502
  • Beğeniler 118 / 163
  • Ticaret 0, (%0)
Bir while dongusu kur ve tablodaki sayilari cek eger gercekten farkli bir sayi cikarsa while degiskenini bir arttir bu sayede kac tane uretmek istiyorsan o kadar farkli sayi uretebilirsin :)
 

 

Her Türlü Stabil Bot! | İnstagram, Twitter, Whatsapp ve daha fazlası için PM!

kyzaghan kyzaghan Lord of the Ninth Sky Kullanıcı
  • Üyelik 14.04.2017
  • Yaş/Cinsiyet 32 / E
  • Meslek Yazılım Destek Lideri
  • Konum İzmir
  • Ad Soyad İ** K**
  • Mesajlar 50
  • Beğeniler 7 / 18
  • Ticaret 0, (%0)
Php'den sqle sorgu gönderip çekmek istersen aşağıda ki kodu kullanabilirsin.

Build Schema + Run sql dersen sonucu gösterecek. Eğer hiç kayıt dönmediği durum olursa sorguyu tekrar çalıştıracak bir döngü iş görecektir.

1-4 arası kayıtlar için (5-1))+1 ------- 2-11 arası kayıtlar için (12-2))+2 olarak değiştirebilirsin.
http://sqlfiddle.com/#!9/ffede/16
 

 

SENibrahim SENibrahim ibocum Kullanıcı
  • Üyelik 22.12.2017
  • Yaş/Cinsiyet 23 / E
  • Meslek Öğrenci
  • Konum Aydın
  • Ad Soyad İ** Ş**
  • Mesajlar 4598
  • Beğeniler 1727 / 1541
  • Ticaret 15, (%100)
Merhaba,

https://stackoverflow.com/questions/4173867/random-number-in-range-min-max-using-php

https://www.thoughtco.com/rand-php-function-2694085


Buraları kaynak olarak kullanabilirsiniz.
 

 

Herkez hata yapabilir, pardon herkes. | ibocum.com
wmaraci
wmaraci

mab1982 mab1982 WM Aracı Kullanıcı
  • Üyelik 26.06.2018
  • Yaş/Cinsiyet 42 / E
  • Meslek Mühendis
  • Konum Adana
  • Ad Soyad A** B**
  • Mesajlar 5
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
Hızlı cevaplarınız için çok teşekkür ederim.
tam olarak derdimi anlatamadım sanırım. Bu bahsettiğiniz işlemleri denedim ve inceledim. Benim istemiş olduğum sonucu vermiyor.Benim istediğim s1 ve s2 üreteyim ama hem yeni ürettiğim s1 ve s2 birbirinden farklı olsun hem de veritabanında kayıtlı olmasın.
s1 ve s2 unutalım. Ben onları birleştirip aralarına tire "-" koyarak veritabanındaki tablo'ya tek parça olarak atarım.Tablomuzu şöyle yapsak daha iyi anlatabilirim derdimi sanırım.


dizi
---
1-2
1-3
1-4
2-3

tabloda eksik olan , 1 ve 4 ile oluşabilecek random, birbirinden farklı ve (sanırım bu kısmı atladım) küçükten büyüğe sıralı iki değer var 2-4 ve 3-4. İşte ben bu iki değerden birini üretmek istiyorum. Umarım bu sefer anlatabilmişimdir. ;)
 

 

Nanoripper Nanoripper Hello World! Kullanıcı
  • Üyelik 25.10.2015
  • Yaş/Cinsiyet 30 / E
  • Meslek Computer Science
  • Konum İstanbul Anadolu
  • Ad Soyad Y** A**
  • Mesajlar 71
  • Beğeniler 1 / 19
  • Ticaret 0, (%0)
İstediğin şeyi yanlış anlamadıysam eğer; bu durumda önce 1. sayıyı istediğin aralıkta while döngüsü ile eşit olmaması gereken sayılarla karşılaştırarak rastgele üretebilirsin. Ardından 1. sayı üretildikten sonra 2. sayı 1. sayıdan büyük olacağı için

$s2'yi $s2 = rand(1,4) yerine $s2 = rand($s1+1, 4) şeklinde tekrar üretmeyi deneyebilirsin.
 

 

mab1982 mab1982 WM Aracı Kullanıcı
  • Üyelik 26.06.2018
  • Yaş/Cinsiyet 42 / E
  • Meslek Mühendis
  • Konum Adana
  • Ad Soyad A** B**
  • Mesajlar 5
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
İlgi ve alakalarınız için tekrar teşekkür ederim. Kendi çapımda bir şeyler yapmaya çalıştım. Malum PHP dilini hiç bilmeyen biri için büyük başarı :)
Aşağıdaki kodlarla rastgele sayı dizisini oluşturabiliyorum. Küçükten büyüğe, önlerine "." nokta koydurarak ve birbirinden farklı sayı dizisi.
Veritabanından tablo'da bulunan değerleri de aynı bu üretilen sayı gibi kaydettirdim. Yani tablo şöyle oldu;

s1
---
1.2.
1.3.
1.4.
2.3.

Bu verileri de çekip listeleyebildim. Şimdi bu listelediğim değerlerle ürettiğim değeri karşılaştırıp eğer eşitse döngü başa dönse, değilse veritabanına kaydetse diye uğraşıyorum ama yapamıyorum. Yardımlarınızı bekliyor saygılar sunuyorum.


do
{
$a=rand(1,4);
$b=rand(1,4);
}

while ($a==$b) ;
$sayi = array($a,$b);

$dizi_sayisi = count($sayi);

for ( $i = 0; $i < $dizi_sayisi; $i++ )

for ( $i = 0; $i < $dizi_sayisi; $i++ )
{
for ($j = 0; $j < $dizi_sayisi; $j++ )
{
if ($sayi[$i] < $sayi[$j])
{
$bellek = $sayi[$i];
$sayi[$i] = $sayi[$j];
$sayi[$j] = $bellek;
}
}
}

for( $i = 0; $i < $dizi_sayisi; $i++ )
print_r ($sayi[$i]."."); // Rastgele sayı dizisini oluşturabiliyorum.
echo "
";

$sayilist = $db->query("SELECT s1 FROM tablo ORDER BY s1 ASC");
while ($list = $db->fetch_array($sayilist)) {
$kiyaslist = "" . $list['s1'] . ",";
echo "" . $list['s1'] . ","; // veritabanı tablo'da bulunan s1 değerlerini sıralayabiliyorum.

}
 

 

mab1982 mab1982 WM Aracı Kullanıcı
  • Üyelik 26.06.2018
  • Yaş/Cinsiyet 42 / E
  • Meslek Mühendis
  • Konum Adana
  • Ad Soyad A** B**
  • Mesajlar 5
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
Arkadaşlar kendi sorunumu kendim çözdüm. ": D. Sizlere de çok teşekkür ederim ilgilendiğiniz için. Belki faydası olur diye çözümü paylaşmak istedim. Biraz fazla amatörce gelebilir ama benim elimden gelen bu kadar "; )

tablo
s1
-----
1.2
1.3
1.4
2.3

burada olabilecek 2.3 ve 3.4 değerleri. Aşağıdaki kodlarla hedefime ulaştım.

do // burada 2 random sayımızı üretmeye başladım.
{
$a=rand(1,4);
$b=rand(1,4);
}

while ($a==$b) ; // eşit olmamalarını sağladım.
$sayilar=array($a,$b);
sort($sayilar); // küçükten büyüğe sıraladım.
$kontrol = "" . $sayilar[0] . "." . $sayilar[1];

// kontrol için sayıları veritabanındaki tabloda bulunan değerle aynı hale getirdim. 1.2 veya 2.3 gibi

$sonuc=$kontrol; //sonucu kontrol ettirdim.
$cond=True;
while($cond){
$query = "SELECT * FROM tablo WHERE s1 = '$sonuc'";
$result = $db->query($query);
// veritabanında o değer var mı diye baktım.
if(mysql_num_rows($result)>0)
{
do // varsa başa döndüm.
{
$a=rand(1,4);
$b=rand(1,4);
}

while ($a==$b) ;
$sayilar=array($a,$b);
sort($sayilar);
$kontrol = "" . $sayilar[0] . "." . $sayilar[1];

$sonuc=$kontrol;
}
else
{
$cond=False;
}
}
echo "
";
echo $sonuç; //yoksa yeni değer oluştu ve yazdırdım.


Tabi arada bazı işlemlerde var. Hazır bir kodu düzenlediğim için ne yaptığımı bende bilmiyorum ;D
 

 

kelebek kelebek WM Aracı Kullanıcı
  • Üyelik 11.05.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Geliştirici
  • Konum Malatya
  • Ad Soyad E** K**
  • Mesajlar 3142
  • Beğeniler 60 / 764
  • Ticaret 5, (%100)
Bu kadar kod yazman gereksiz. Genelde bu tür random sayılar için zamanı baz alarak üretmek en mantıklısıdır.

Örnek olarak internette bulduğum bir kod:

$key = microtime() + floor(rand()*10000);
 

 

mab1982 mab1982 WM Aracı Kullanıcı
  • Üyelik 26.06.2018
  • Yaş/Cinsiyet 42 / E
  • Meslek Mühendis
  • Konum Adana
  • Ad Soyad A** B**
  • Mesajlar 5
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
Gereksiz kalabalık olabilir. Benim işimi görmesi önemli benim için. Daha kolayı varsa bilemem ama bu benim işimi gördüğü için şimdilik sorun yok. Bakalım bu döngüyü kayıt sayısı çoğalınca nasıl yaparım. Beni düşündüren o ";)
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al