按出现率生成随机字符(有点难度)
查看( 656 ) /
评论( 8 )
TAG:
-
海浪
发布于2005-12-02 18:30:23
-
不明白你的意思
-
小男
发布于2005-12-02 19:16:59
-
算概率??
-
FFFXXX发布于2005-12-02 19:38:13
-
举个例子看看?
例如出现 D 10次 生成的字符是什么啊?
-
ivvn
发布于2005-12-02 20:10:34
-
CODE:
<BODY BGCOLOR=#035096>马马乎乎大家也写写,我学习!
<script language=vbscript>
Dim ColorArr(4)
Dim sArr(4) '字符
Dim nArr(4) '出现率
Dim TableNum
sArr(0) = "A"
sArr(1) = "B"
sArr(2) = "C"
sArr(3) = "D"
sArr(4) = "E"
ColorArr(0) = "#CCCC33"
ColorArr(1) = "#669966"
ColorArr(2) = "#FF6600"
ColorArr(3) = "#006699"
ColorArr(4) = "#003366"
nArr(0) = 20
nArr(1) = 20
nArr(2) = 20
nArr(3) = 20
nArr(4) = 20
TableNum = 21
Call CrateTable(338,338,TableNum,sArr,nArr)
Function CrateTable(TableWidth,TableHeight,TableNum,sArr,nArr)
Dim aArr,bArr,cArr,sNum,PutStr,PutColor
ReDim aArr(UBound(sArr)) '此字符要显示的次数
ReDim bArr(UBound(sArr)) '已显次
ReDim cArr(UBound(sArr)) '已显次
sNum = ((TableNum*TableNum)/100) '百分点
For i=0 To UBound(aArr)
aArr(i) = Int(sNum*nArr(i)) '此字符的出现率
bArr(i) = 0
cArr(i) = aArr(i)
Next
document.write("<table width='"& TableWidth &"' height='" & TableHeight & "' border='0' bordercolor='E3E7F2' bgcolor='E3E7F2' cellspacing='1' cellpadding='0'>")
For j = 0 To TableNum - 1
document.write("<tr bgcolor='ffffff'>")
For i = 0 To TableNum - 1
sRnd = RndNum(5)
If bArr(sRnd)>=aArr(sRnd) Then
cNum = GetBigNum(cArr,sRnd)
PutStr = sArr(cNum)
PutColor = ColorArr(cNum)
bNum = bArr(cNum)
bArr(cNum) = bNum + 1
cArr(cNum) = aArr(cNum) - bArr(cNum)
Else
PutColor = ColorArr(sRnd)
PutStr = sArr(sRnd)
bNum = bArr(sRnd)
bArr(sRnd) = bNum + 1
cArr(sRnd) = aArr(sRnd) - bArr(sRnd)
End If
document.write("<td width='" & TableWidth/TableNum & "' height='" & TableHeight/TableNum & "' BgColor='" & PutColor & "'>" & PutStr & "</td>")
Next
document.write("</tr>")
Next
document.write("</table>")
End Function
Function GetBigNum(oArr,n)
Dim Min,S
Min = 0
S = oArr(0)
For I=0 To Ubound(oArr)
If S<oArr(I) And I<>n Then
S = oArr(I)
Min = I
End If
Next
GetBigNum = Min
End Function
Function RndNum(sNum)
Randomize
RndNum = Int(Rnd * sNum)
End Function
</script>
[ 本帖由 ivvn 最后编辑于 2005-12-2 20:12 ]
-
bobo1225发布于2005-12-03 01:16:18
-
确实有点意思~~~~
-
ivvn
发布于2005-12-03 20:24:51
-
看来看出都不太理想,期待高手写出更好的
-
aasvvv发布于2005-12-03 23:58:53
-
CODE:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>魔王立江</title>
<style>
body{text-align:center;margin:5 0}
table{border-collapse:collapse}
body,td{font-size:12px;cursor:default}
a:link,a:visited{color:#006600;text-decoration:none}
a:hover {color:#9900FF;text-decoration:underline}
</style></head>
<body>
<script>
tabW=20
tabH=20
sNum=tabW*tabH
t="<table border=1>"
for(x=0;x<sNum;x++)
{
if(x%tabW==0)t+="<tr align=center>"
t+="<td height=15 width=15 id=asdf> </td>"
if(x%tabW==tabW-1)t+="</tr>"
}
document.write(t+"</table>")
sArr=new Array()
nArr=new Array()
sArr[0] = "A"
sArr[1] = "B"
sArr[2] = "C"
sArr[3] = "D"
sArr[4] = "E"
nArr[0] = 100
nArr[1] = 100
nArr[2] = 60
nArr[3] = 60
nArr[4] = 80
t=""
for(x=0;x<sArr.length;x++)
{
for(y=0;y<nArr[x];y++)
{
t+=sArr[x]
}
}
t1=""
while(t!="")
{
a=Math.floor(Math.random()*999999999)%t.length
t1+=t.charAt(a)
t=t.substr(0,a)+t.substring(a+1)
}
for(x=0;x<t1.length;x++)
{
asdf[x].innerText=t1.charAt(x)
}
</script>
</body></html>
-
ivvn
发布于2006-01-04 20:33:56
-
QUOTE:
引用内容由 aasvvv 发表于 2005-12-3 11:58 PM
魔王就是魔王头脑清晰
[code]<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>魔王立江</title>
<style>
body{text-align:c ...
