Merhabalar,
şöyle bir tablo düşünelim
RecID RankAmount RankPercent
2 5.00 13.51
12 1.00 2.70
14 12.00 32.43
5 7.00 18.92
7 2.00 5.41
9 10.00 27.03
6 kayıt var ve ben bunlardan sadece birini seçecem ama seçimim rankpercent alanında ki yüzdelere göre olacak bu tabloda %32,43 ile seçilme oranı en yüksek olan 14 recid li record.
rankamount alanı çok önemli değil aslında ben rankpercent değerlerini rankamounttan oluşturdum.
Fikri olan ?
sql randomize percentage
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
sql randomize percentage
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
Re: sql randomize percentage
kayıtları RankPercent alanına göre azalan sırada sıralayıp ilk kaydı almak yeterli olur sanırım.
Kod: Tümünü seç
SELECT TOP 1 * FROM MYTABLE ORDER BY RANKPERCENT DESC
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: sql randomize percentage
pardon ben söylemeyi unuttum bu seçim random olacak ama random yaparken rankpercentlerdeki orana göre olasılık hesaplamak lazım yada
randomize işlemi şöyle olacak yani
%32 olanın random sonucu gelme ihtimali en yüksek olacak mesela...
randomize işlemi şöyle olacak yani
%32 olanın random sonucu gelme ihtimali en yüksek olacak mesela...
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
Re: sql randomize percentage
SQL Server'da rastgele kayıt çekmek için ben genelde şu yapıyı kullanıyorum.
Kod: Tümünü seç
SELECT TOP 1 *
FROM Tablo
ORDER BY NEWID()
Re: sql randomize percentage
RankPercent değerlerinin toplamının 100 olduğunu varsayıyorum, eğer 100 etmiyorsa 100 olması için normalize işlemi yapınız. RankPercent alanına göre kayıtları büyükten küçüğe sıralayın ve kümülatif toplayın. 0-100 arasında rastsal bir sayı oluşturun ve rastsal sayıdan büyük ilk değeri alın.
Örnek:
sıralayalım
RecID RankAmount RankPercent
14 12.00 32.43
9 10.00 27.03
5 7.00 18.92
2 5.00 13.51
7 2.00 5.41
12 1.00 2.70
Kümülatif
RecID RankAmount RankPercent
14 12.00 32.43
9 10.00 59.46
5 7.00 78.38
2 5.00 91.89
7 2.00 97.30
12 1.00 100.00
Rastgele sayı 90 olsun. Bu durum seçilen kayıt 2 RecId'lidir. Bu işlemleri SQL ilede yapabilirsiniz, isterseniz strored procedure yazın daha kolay olur.
Bu işlemin literatürdeki adı rulet çemberi (roulette wheel) dir.
Örnek:
sıralayalım
RecID RankAmount RankPercent
14 12.00 32.43
9 10.00 27.03
5 7.00 18.92
2 5.00 13.51
7 2.00 5.41
12 1.00 2.70
Kümülatif
RecID RankAmount RankPercent
14 12.00 32.43
9 10.00 59.46
5 7.00 78.38
2 5.00 91.89
7 2.00 97.30
12 1.00 100.00
Rastgele sayı 90 olsun. Bu durum seçilen kayıt 2 RecId'lidir. Bu işlemleri SQL ilede yapabilirsiniz, isterseniz strored procedure yazın daha kolay olur.
Bu işlemin literatürdeki adı rulet çemberi (roulette wheel) dir.