回复 16# kxing
看下这个如何???
;会员注册数字ID问题:要求输出的数据找不到规律,大小也不一定
;需要添加判断$index的值是否已经到了数据的尽头,即会员是不是用完了,需要升位等,以及你那个所谓的"靓号"判断,这里我就不加了
;此方法的好处是:除了本身的所谓的随机性外,还做到了:
;高效性(可以先生成1亿会员ID,然后保存到数据库里,需要输出时直接读就可以了)
;"物尽其用"---除了你所谓的"靓号"外,所有的ID都用得上,不存在某个数因随机性的问题没有输出(当然,"靓号"如何处理,那是你的事了)
;方便统计:只要记录下当前输出的行号(如果是在数组中,可以通过索引判断),就很方便知道已经有多少个ID被注册了
Global $index=0
$Form1 = GUICreate("会员注册数字ID演示", 270, 60)
$Button1 = GUICtrlCreateButton("注册个ID", 6, 6, 85, 30)
$Label1 = GUICtrlCreateLabel("", 100, 12, 200, 60)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)
$aMember=_randomNUMArray()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
GUICtrlSetData($Label1,'恭喜您获得的会员ID是:'&@LF&' '&$aMember[$index])
$index+=1
EndSwitch
WEnd
Func _randomNUMArray($iStart=10000,$iEnd=99999);参数分别是ID的开始和结束
Local $iCount=$iEnd-$iStart
If $iCount<0 Then Return SetError(1)
Local $aNum[$iCount]
For $i = 0 To $iCount-1
$aNum[$i] = $iStart
$iStart+=1
Next
For $i = 0 To $iCount-1
$r = Random($i, $iCount-1, 1)
$temp = $aNum[$i]
$aNum[$i] = $aNum[$r]
$aNum[$r] = $temp
Next
Return $aNum
EndFunc
|