İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Rastgele Seçim

MadDriver

0
İyinet Üyesi
Katılım
3 Mayıs 2005
Mesajlar
50
Reaction score
0
asp ile rastgele bir veriyi söyle alabiliyoruz
Kod:
set rs = server.createobject("adodb.recordset")
sql = "select * from bilmemne"
rs.open sql, conn, 1, 3

toplam = rs.RecordCount

Randomize
rastgele = Int(toplam * Rnd)
rs.Move(rastgele)
Bu kod ile sadece bir tane random veri alabiliyoruz.
Peki birden fazla veriyi random almak için gereken kod nedir?
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
Bu 2 rastgele kayit almani saglar.

Kod:
set rs = server.createobject("adodb.recordset")
sql = "select * from bilmemne"
rs.open sql, conn, 1, 3
 
toplam = rs.RecordCount
 
Randomize
rastgele = Int(toplam * Rnd)
rs.Move(rastgele)
 
Response.Write rs("bilememne_kayit") 
 
Randomize
rastgele = Int(toplam * Rnd)
rs.Move(rastgele)
 
Response.Write rs("bilememne_kayit") 
 
rs.Close


Asagidaki kismi dongu icine koyarak istedigin kadar rastgele kayit alabilirsin:

Kod:
Randomize
rastgele = Int(toplam * Rnd)
rs.Move(rastgele)
 
Response.Write rs("bilememne_kayit")
 

MadDriver

0
İyinet Üyesi
Katılım
3 Mayıs 2005
Mesajlar
50
Reaction score
0
Admin arkadaşım sağol.
Fakat böyle yaparsak aynı kayıttan birden fazla çıkma olasılığı oluşuyor.
Başka bir yöntemi olmalı bence.
 

MadDriver

0
İyinet Üyesi
Katılım
3 Mayıs 2005
Mesajlar
50
Reaction score
0
şöyle bir döngüyle hallettim:
Kod:
for i = 1 to 10
set rs = server.createobject("adodb.recordset")
sql = "select * from bilmemne "&kod
rs.open sql, conn, 1, 3
 
toplam = rs.RecordCount

if toplam = 0 then
Response.Write "Kayıt Boş" 
else
Randomize
rastgele = Int(toplam * Rnd)
rs.Move(rastgele)

kod = kod & "and id <> " & rs("id")

Response.Write rs("bilememne_kayit") 
end if

if mode=1 then
mode=2
else
mode=1
end if
Next
Böylece rastgele seçtiğimiz dataların hiçbiri aynı olmuyor ve rastgele seçilecek data bittiysede "Kayıt Boş" yazıyor.
Rastgele seçilecek data sayısı isteğe göre değiştirilebilir.
 
M

mcanli

Misafir
Böyle yaparsan 1 ve 2 nci dönümünde aynı sayıyı seçmeyebilir ama 3 ncü seçimde 1 nci seçilen kayıt ile aynı olmadığını kontrol etmediğin için tekrar aynı kaydı seçebilir.

Tavsiyem; üretilen sayıları bir dize içerisine atıp, son üretilen sayı ile daha öncekileri karşılaştırıp eğer aynı sayı daha önce üretilmiş ise yeni bir sayı ürettirmek üretilmemiş ise o sayıyı dizenin son elemanı olarak atayıp yapılacak işlemi yapmaktır.
 

MadDriver

0
İyinet Üyesi
Katılım
3 Mayıs 2005
Mesajlar
50
Reaction score
0
Kod:
kod = kod & "and id <> " & rs("id")
Bu kod sayesinde herseferinde bir öncekinide dizi içine ekliyor zaten.
Yani 1 döngüde and id = 4 ise ikinci döngüde de seçilen id mesela 10 ise şöyle oluyor:
and id <> 4 and id <> 10 ... diye ekliyor herseferinde.
Böylece rastgele seçilen satır hiçbir şekilde tekrar seçilmiyor.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst