<%
' àÃÕ¡ä»Âѧ¿Ñ§¤ìªÑè¹ã¹¡ÒÃÊØèÁËÁÒÂàÅ¢ºÑµÃ»ÃЪҪ¹àÅ·ѹ·Õ
Call RandomNumber
%>
<h1>ASP Script ¡ÒÃÊØèÁËÁÒÂàÅ¢ºÑµÃ»ÃЪҪ¹ - www.g2gnet.com</h1>
<form name="frmRandom" method="post" action="">
<% Response.Write RandomNumber %>
<input type="submit" name="cmdRandom" id="cmdRandom"
value="ÊØèÁËÁÒÂàÅ¢ºÑµÃ»ÃЪҪ¹" onClick="Call RandomNumber()">
</form>
<%
' ########################################################
Function RandomNumber
' ########################################################
' àÃÔèÁµé¹ã¹¡ÒÃÊØèÁµÑÇàÅ¢¡è͹
Randomize
' ÊٵáÒÃÊØèÁµÑÇàÅ¢ àÁ×èÍ High = ¤èÒÊÙ§ÊØ´ áÅÐ Low = ¤èÒµèÓÊØ´
'RandomNumber = Int((High - Low + 1) * Rnd) + Low
' µÑ駤èÒà»ç¹ False äÇé¡è͹
blnFlag = False
' ÊØèÁàÅ¢¨Ó¹Ç¹ 12 ËÅÑ¡ â´Â·ÕèËÅÑ¡ááµéͧäÁèãªè 0 áÅÐ 9
' à¹×èͧ¨Ò¡àÃÒãªé¡ÒùѺàÃÔèÁµé¹¨Ò¡ 1 ä»ÊÔé¹ÊØ´·Õè 12 â´ÂÁÕ¤èÒà¾ÔèÁ¢Öé¹·ÕÅÐ 1 àËÁÒÐÊÁ·Õè¨Ðãªé For
For i = 1 To 12
' Not False ËÃ×Í äÁè¨ÃÔ§ ¡ç¤×Í à·ç¨ (ËÃ×Íà¢Õ¹ blnFlag = False) ...
' áÊ´§Çèҵ͹¹ÕéàÃÒ¡ÓÅѧ¨ÐËÒµÑÇàÅ¢ËÅÑ¡ááÍÂÙè
If Not blnFlag Then
' ÊØèÁµÑÇàÅ¢ËÅÑ¡áá µéͧäÁèãËéÁÕ¤èÒà»ç¹ 0 áÅÐ 9 ... ¹Õè¤×Í¡Ò÷ӫéÓ ËÃ×Í Repetitive
' ãªé¡ÒÃǹÃͺ (Loop) Ẻ For ¨ÐäÁèàËÁÒÐÊÁÊÓËÃѺ§Ò¹¹Õé
' à¾ÃÒÐàÃÒäÁèÃÙé¤èÒàÃÔèÁµé¹ ¤èÒÊÔé¹ÊØ´ áÅÐ ¤èÒà¾ÔèÁ (ËÃ×ÍÅ´)
' áµèÁѹ¡ç¹ÓÁÒãªéä´éàËÁ×͹¡Ñ¹¹èФÃѺ à¾ÃÒÐÁѹÁÕ¤ÓÊÑè§ãËéÍÍ¡¨Ò¡ Loop ´éÇ Exit For ÍÂÙè
Do
' ÊØèÁËÒµÑÇàÅ¢ 0 - 9 ... ËÒ¡ä´é 0 ËÃ×Í 9 µéÍ§ÊØèÁµÑÇàÅ¢ãËÁè
RandomNumber = Int((9 + 1) * Rnd)
' ·Ó¨¹¡ÇèÒËÅÑ¡ááµéͧäÁèà·èҡѺ 0 áÅÐ 9 (à§×è͹䢵éͧãªé AND)
' àªè¹ àÁ×èÍ RandomNumber ÁÕ¤èÒ = 1
' ·ÓãËéä´éà§×èÍ¹ä¢ 1 <> 0 áÅÐ 1 <> 9 (True AND True = True)
' à§×è͹ä¢à»ç¹ "¨ÃÔ§" ãËéÍÍ¡¨Ò¡ Loop
' ËÃ×Í àÁ×èÍ RandomNumber ÁÕ¤èÒ = 9
' ·ÓãËéä´éà§×èÍ¹ä¢ 9 <> 0 áÅÐ 9 <> 9 (True AND False = False)
' à§×è͹ä¢à»ç¹ "à·ç¨" ãËéǹ Loop µèÍä»
Loop Until RandomNumber <> 0 And RandomNumber <> 9
' ËÃ×Í ãªéà§×èÍ¹ä¢ Until áµè¡ÅѺ¡Ñ¹´éÇ Not
'Loop Until Not RandomNumber = 0 And Not RandomNumber = 9
' ËÃ×Íãªé While áµèà§×è͹䢵éͧ¡ÅѺ¡Ñ¹¡Ñºáºº Until áÅеéͧãªé OR á·¹·Õè
' àªè¹ àÁ×èÍ RandomNumber ÁÕ¤èÒ = 1
' ·ÓãËéä´éà§×èÍ¹ä¢ 1 = 0 ËÃ×Í 1 = 9 (False OR False = False)
' à§×è͹ä¢à»ç¹ "à·ç¨" ãËéÍÍ¡¨Ò¡ Loop
' ËÃ×Í àÁ×èÍ RandomNumber ÁÕ¤èÒ = 9
' ·ÓãËéä´éà§×èÍ¹ä¢ 9 = 0 ËÃ×Í 9 = 9 (False OR True = True)
' à§×è͹ä¢à»ç¹ "¨ÃÔ§" ãËéǹ Loop µèÍä»
'Loop While RandomNumber = 0 Or RandomNumber = 9
' á¨é§ÇèÒËÅÑ¡ááËÒµÑÇàÅ¢·ÕèäÁèãªè 0 ËÃ×Í 9 àÊÃç¨ÊÁºÙóìáÅéÇ
' ËÅÑ¡µèÍ仨Ðä´éäÁèµéͧà¢éÒä» Do Loop ÍÕ¡
blnFlag = True
' Flag µÑǹÕé¨Ðà»ÅÕè¹à»ç¹ False àÁ×èÍËÒµÑÇàÅ¢ËÅÑ¡µèÍä»
blnCheck = True
End If
' ËÒ¡ blnFlag à»ç¹¨ÃÔ§ áÅÐ blnCheck à»ç¹¨ÃÔ§ áÊ´§ÇèÒ¾Öè§ËÅØ´ÍÍ¡¨Ò¡ Loop Do While
If blnFlag And blnCheck Then
' ¨Ò¡ËÅÑ¡·Õè 2 - 12 µéͧäÁèãËé¡ÅѺÁÒã¹Êèǹ¹ÕéÍÕ¡ ãËéŧ价ӷÕè Else àÅÂ
blnCheck = True
Else
RandomNumber = RandomNumber & Int((9 + 1) * Rnd)
End If
Next
' ########################################################
' àÃÔèÁµé¹¤Ó¹Ç³ËÒ¤èÒ¼ÅÃÇÁµÑÇàÅ¢·Ñé§ 12 ËÅÑ¡áá·Õèä´é ´Ñ§¹Õé
' ËÒ¼ÅÃÇÁµÑé§áµèËÅÑ¡·Õè 1 仨¹¶Ö§ËÅÑ¡·Õè 12 (¹Ñº¨Ò¡«éÒÂ仢ÇÒ)
' â´ÂãËéËÅÑ¡·Õè 1 ¤Ù³´éǹéÓ˹ѡ»ÃШÓËÅÑ¡ = 13
' â´ÂãËéËÅÑ¡·Õè 2 ¤Ù³´éǹéÓ˹ѡ»ÃШÓËÅÑ¡ = 12
' â´ÂãËéËÅÑ¡·Õè 3 ¤Ù³´éǹéÓ˹ѡ»ÃШÓËÅÑ¡ = 11
' â´ÂãËéËÅÑ¡·Õè .. ¤Ù³´éǹéÓ˹ѡ»ÃШÓËÅÑ¡ = ..
' â´ÂãËéËÅÑ¡·Õè 12 ¤Ù³´éǹéÓ˹ѡ»ÃШÓËÅÑ¡ = 2
' ¨Ò¡¹Ñ鹹ӼšÒäٳ¢Í§áµèÅÐËÅÑ¡ÁÒÃÇÁ¡Ñ¹à¢éÒä»
' ËÅÑ¡áµèÅÐËÅÑ¡ ¤×Í Mid(RandomNumber, Count, 1))
' ¹éÓ˹ѡ¢Í§áµèÅÐËÅÑ¡ ¤×Í (14 - Count) àÁ×èÍ Count àÃÔèÁµé¹¨Ò¡ 1 ä»ÊÔé¹ÊØ´·Õè 12
' ´Ñ§¹Ñ鹤èÒ¹Õé (14 - Count) ¨Ö§àÃÔèÁµé¹¤èÒ¨Ò¡ 13, 12, 11, ..., ÊÔé¹ÊØ´·Õè 2 ¤ÃѺ¼Á
Sum = 0 ' Clear ¤èÒ¼ÅÃÇÁ¡è͹ (à¾×èͤÇÒÁá¹èã¨)
For Count = 1 To 12
Sum = Sum + Mid(RandomNumber, Count, 1) * (14 - Count)
Next
' ########################################################
' ¢Ñ鹵͹¹Õé ¤×Í ¡ÒÃËÒ¤èÒ Check Digit ËÃ×Í ËÅÑ¡µÃǨÊͺ¤ÇÒÁ¶Ù¡µéͧ (ËÅÑ¡·Õè 13)
' ¹Ó¼ÅÃÇÁ·Õèä´é (Sum) ÁÒ Mod (¡ÒÃËÒÃàÍÒàÈÉ) ´éÇ 11
' ¹Ñ蹤×ͤèÒ·ÕèàÃÒ¨Ðä´é¡ç¤×Í 0, 1, 2, .. , 10 (Sum Mod 11)
' ¨Ò¡¹Ñé¹ãËéźÍÍ¡´éÇ 11 ¡ç¨Ð·ÓãËéä´é¤èÒµÑé§áµè 1, 2, 3, ... , 11 (11 - (Sum Mod 11))
' áÅéÇãËéàÅ×Í¡µÑÇ¢ÇÒÁ×ÍÊØ´ÁÒ˹Öè§µÑÇ ´éǤÓÊÑè§ Right$ --> Right$(Str(11 - (Sum Mod 11)), 1)
' ¤èÒÊØ´·éÒ¹Õé¡ç¤×Í ËÅÑ¡·Õè 13 ËÃ×Í ËÅÑ¡µÃǨÊͺ¤ÇÒÁ¶Ù¡µéͧ (Check Digit) ¹Ñè¹àͧ
CheckDigit = Right(11 - (Sum Mod 11), 1)
' ########################################################
' ########################################################
' àÍÒ¤èÒÁҨѴàÃÕ§à¾×è͹Óä»ãªé㹡ÒÃÊÁѤÃàÅè¹à¡ÁÊìµèÍä» ... 55555+
'
RandomNumber = RandomNumber & CheckDigit
'
' ########################################################
End Function
%>
Conclusion: àÃÕ¡ä´éÇèÒ VB Áѹ¨ÐÁÒ¤Ùè¡Ñ¹¡Ñº ASP àÅ¡çÇèÒä´é áÅéÇÂÔè§¼ÊÁ¼ÊÒ¹¡Ñº¡ÒÃÍèÒ¹ Tag ¢Í§ HTML ä´é´éÇ (¡ç·ÓàÇçºä´é¹Ñè¹áËÅФÃѺ) ¡çÂÔ觨зÓãËéà¢éÒã¨ã¹ ASP Script ä´éÍÂèÒ§äÁèÂÒ¡¹Ñ¡ ... ÊÓËÃѺ ASP Script ·Õèãªé§Ò¹¹Õé (RandomNumber) ÁѹäÁèä´éà»ÅÕè¹仨ҡà´ÔÁ¢Í§ VB6 àÅ ... áµè·ÕèÊÓ¤ÑÁÒ¡·ÕèÊØ´àË繨Ðà»ç¹àÃ×èͧ¢Í§ Algorithm «èÐÁÒ¡¡ÇèÒ à¾ÃÒÐÁѹ¡çäÁèä´éà»ÅÕè¹á»Å§ä»µÒÁÀÒÉÒ ËÃ×Í à¤Ã×èͧÁ×Í·Õèãªé§Ò¹àŤÃѺ ... ¾Õè¹éͧ |