昨天幫壹個哥們改了壹個JAVA的模擬抽獎程序,有點意思。自己還給它加了壹個暗箱,嘿嘿。暗箱還是比較暗,而且作用效果不錯,準備再改改。改好了發源碼!
本程序用於模擬抽獎,可用於日常的單位、公司進行抽獎活動。
具體的算法思想是:
首先從壹個文本文件中讀取參加抽獎的人員信息,該信息有壹定的格式既:姓名-手機號碼(根據具體情況而定,切記中間是字符“-”,否則無法讀入)。如下圖:
程序將讀入的信息裝入兩個VECTOR中(v_identNumber和v_name)。點擊“開始”按鈕進行抽獎操作。
後臺的數據產生是利用JAVA的偽隨機函數。根據隨機數產生展現在前臺的字符,每次間隔的時間是0.05秒。
用戶點擊“停止”按鈕,操作線程就掛起,這時產生相應的中獎號碼(即前臺展示的號碼),中獎號碼存儲在v_printident中。v_printident同樣是VECTOR類型的。
本系統設置的是將產生3個3等獎,2個2等獎,1個1等獎還有壹個特等獎。系統將根據用戶點擊按鈕次數來確定產生幾等獎。
獎項全部產生以後,點擊保存,可以將結果信息保存在當前目錄下的result.txt中。
關於暗箱的說明:
基本說明:
暗箱操作不是光明正大的行為,但是作為壹個小小的研究對象,本人覺得還是有點意思。
具體功能:
可以實現對制定人員的獲獎操作,可以實現對特等獎的產生操作。
實現機制:
首先,用戶讀入指定獲獎的人員文件,數據的格式為:姓名*號碼切記是(“*”,否則無法讀入)。在人員文件的最後壹行,是控制中獎力度的key,具體格式為“ *key”(切記前面要有壹個空格鍵),如下圖:
關於key的說明:
Key的值可以設置1到10,如果沒有在這個範圍,系統將自動設置key為5
系統的key設置得越大,指定人員的獲獎概率就越大。具體公式:key/(總人數*指定人數)
如果key的值設置為10,系統將會產生特等獎,獲得者為制定人員的第壹項,但是除了特等獎,不會再對其他人員有任何操作(相當於只能產生特等獎)。
其他壹些說明讀者自己去看程序,這裏不再贅述。程序很簡單(在後面的):