Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Rastgele Seçim

MadDriver

0
Onaylı Üye
Üye
Katılım
3 Mayıs 2005
Mesajlar
50
Açılan Konu
39
Tepki puanı
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
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
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
Onaylı Üye
Üye
Katılım
3 Mayıs 2005
Mesajlar
50
Açılan Konu
39
Tepki puanı
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
Onaylı Üye
Üye
Katılım
3 Mayıs 2005
Mesajlar
50
Açılan Konu
39
Tepki puanı
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
Onaylı Üye
Üye
Katılım
3 Mayıs 2005
Mesajlar
50
Açılan Konu
39
Tepki puanı
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.
 
Üst