[問題] ASP.NET 發牌重複問題
下面是我在網路上找到的範例
發牌給四個人 當然牌不能重複
他的亂數發牌是用下面的程式達成的
但是小的才疏學淺 看不懂
有沒有哪位高手可以幫我解釋一下
為什麼這樣就可以達到C(I)完全不會重複?
FOR I = 1 TO 104
X = INT(RND * 52)
Y = INT(RND * 52)
Temp=C(X)
C(X)=C(Y)
C(Y)=Temp
NEXT I
---------------------------------------------------
<!-- ASP.NET 程式名稱: 亂數發牌 Author: 姚奉緒 -->
<!-- This Program Needs 4 graph flies: T0.jpg/T1.jpg/T2.jpg/T3.jpg -->
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Web.Mail" %>
<HTML>
<BODY BgColor="#FFFFFF">
<Form runat="server">
<b>請按鈕發牌:</b>
<asp:Button runat="server" Text="發牌" OnClick="Button_Click" /><P><HR>
<asp:Label runat="server" Text="" id="East" /><P>
<asp:Label runat="server" Text="" id="North" /><P>
<asp:Label runat="server" Text="" id="West" /><P>
<asp:Label runat="server" Text="" id="South" /><P>
</Form>
</BODY>
</HTML>
<script Language="VB" runat="server">
Sub Button_Click(sender As Object, e As EventArgs)
Dim C(52) as Integer
Dim I,J,X,Y,Temp as Integer
Dim card(4) as String
Dim R() ={"A","2","3","4","5","6","7","8","9","T","J","Q","K"}
FOR I = 0 TO 51
C(I) = I
NEXT I
FOR I = 1 TO 104
X = INT(RND * 52)
Y = INT(RND * 52)
Temp=C(X)
C(X)=C(Y)
C(Y)=Temp
NEXT I
FOR I = 0 TO 3
FOR J = 0 TO 12
X = C(J + I * 13) MOD 13
Y = C(J + I * 13) \ 13
card(i)=card(i)+ "<img src=T" & Y & ".jpg>" & R(X) & " "
NEXT J
NEXT I
East.Text="東家: " +card(0)
North.Text="北家: " +card(1)
West.Text="西家: " +card(2)
South.Text="南家: " +card(3)
End Sub
</script>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.230.171
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):