作者vSofav (十四度)
看板Web_Design
标题[问题] ASP.NET 发牌重复问题
时间Tue Nov 14 22:44:24 2006
下面是我在网路上找到的范例
发牌给四个人 当然牌不能重复
他的乱数发牌是用下面的程式达成的
但是小的才疏学浅 看不懂
有没有哪位高手可以帮我解释一下
为什麽这样就可以达到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