
2008年8月13日
package youg;
import java.util.Date;
import java.util.Random;
public class hiden {
public int rand()
{
int sta=1;
//Date d=new Date();
double time=System.currentTimeMillis();
Random r=new Random();
sta=r.nextInt((int)time%1000)%10;
System.out.println(sta);
return sta;
}
public static void main(String args[])
{
hiden h=new hiden();
System.out.println(h.rand());
}
}
posted @
2008-08-14 11:30 志遙 閱讀(249) |
評論 (0) |
編輯 收藏
package youg;
import java.util.Random;
class ChooseThread extends Thread
{
private boolean runFlag = true;//決定此線程是否運行的標(biāo)記
//需要該對象來讀取文本框字段,不用創(chuàng)建它,申明下就好
private ChooseAward chooseAward = null;
private int time=0;
//創(chuàng)建一個新的隨機數(shù)生成器
Random randomNumber = new Random();
public ChooseThread(Object obj)
{
start();
chooseAward = (ChooseAward) obj;
}
public void start()
{
runFlag = false;
super.start();
}
public void changeflag_start()
{
runFlag = true;
time++;//每點擊一次加一
}
public void changeflag_stop()
{
runFlag = false;
}
/*
*實現(xiàn)文本框滾動的效果
*/
public void run()
{
while (runFlag)
{
/*
* 返回一個偽隨機數(shù),它是從此隨機數(shù)生成器的序列中取出的
* 、在 0(包括)和指定值(不包括)之間均勻分布的 int值
*/
//返回向量中存儲了幾個號碼的隨便一個序號
int num;
hiden h=new hiden();
int k=h.rand();
if(k>chooseAward.level)
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
//顯示那個選中的序號對應(yīng)的號碼
chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber
.elementAt(num));
}
else if(k<=chooseAward.level&&chooseAward.level<10&&chooseAward.z_identNumber.size()>=1)
{
num = randomNumber.nextInt(chooseAward.z_identNumber.size());
//顯示那個選中的序號對應(yīng)的號碼
chooseAward.t_identNumber.setText((String) chooseAward.z_identNumber
.elementAt(num)+"****");
//chooseAward.z_identNumber.removeElementAt(num);
}
else if(chooseAward.level<10)
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
//顯示那個選中的序號對應(yīng)的號碼
chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber
.elementAt(num));
}
else if(chooseAward.level>=10&&time<=6)
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber
.elementAt(num));
}
try
{
sleep(50);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
posted @
2008-08-14 11:29 志遙 閱讀(306) |
評論 (0) |
編輯 收藏
摘要: /*
*此小程序的基本流程是,在一個文本文件存放里面?zhèn)溥x的數(shù)據(jù),數(shù)據(jù)的格式是每行有姓名 和 手機號
*他們之間是用分隔符-來分隔的。然后在自定義一個方法,通過分隔符來區(qū)分姓名和手機號,然后將
*他們分別存儲進兩個不同的可變向量當(dāng)中。
* 自定義一個線程,此線程是專門用來隨機選取一個號碼, 并且每隔50毫秒就將一個不同的號碼顯示在
* 號碼框...
閱讀全文
posted @
2008-08-14 11:29 志遙 閱讀(368) |
評論 (0) |
編輯 收藏
昨天幫一個哥們改了一個JAVA的模擬抽獎程序,有點意思。自己還給它加了一個暗箱,嘿嘿。暗箱還是比較暗,而且作用效果不錯,準(zhǔn)備再改改。改好了發(fā)源碼!
本程序用于模擬抽獎,可用于日常的單位、公司進行抽獎活動。
具體的算法思想是:
首先從一個文本文件中讀取參加抽獎的人員信息,該信息有一定的格式既:姓名-手機號碼(根據(jù)具體情況而定,切記中間是字符“-”,否則無法讀入)。如下圖:
程序?qū)⒆x入的信息裝入兩個VECTOR中(v_identNumber和v_name)。點擊“開始”按鈕進行抽獎操作。
后臺的數(shù)據(jù)產(chǎn)生是利用JAVA的偽隨機函數(shù)。根據(jù)隨機數(shù)產(chǎn)生展現(xiàn)在前臺的字符,每次間隔的時間是0.05秒。
用戶點擊“停止”按鈕,操作線程就掛起,這時產(chǎn)生相應(yīng)的中獎號碼(即前臺展示的號碼),中獎號碼存儲在v_printident中。v_printident同樣是VECTOR類型的。
本系統(tǒng)設(shè)置的是將產(chǎn)生3個3等獎,2個2等獎,1個1等獎還有一個特等獎。系統(tǒng)將根據(jù)用戶點擊按鈕次數(shù)來確定產(chǎn)生幾等獎。
獎項全部產(chǎn)生以后,點擊保存,可以將結(jié)果信息保存在當(dāng)前目錄下的result.txt中。
關(guān)于暗箱的說明:
基本說明:
暗箱操作不是光明正大的行為,但是作為一個小小的研究對象,本人覺得還是有點意思。
具體功能:
可以實現(xiàn)對制定人員的獲獎操作,可以實現(xiàn)對特等獎的產(chǎn)生操作。
實現(xiàn)機制:
首先,用戶讀入指定獲獎的人員文件,數(shù)據(jù)的格式為:姓名*號碼切記是(“*”,否則無法讀入)。在人員文件的最后一行,是控制中獎力度的key,具體格式為“ *key”(切記前面要有一個空格鍵),如下圖:
關(guān)于key的說明:
Key的值可以設(shè)置1到10,如果沒有在這個范圍,系統(tǒng)將自動設(shè)置key為5
系統(tǒng)的key設(shè)置得越大,指定人員的獲獎概率就越大。具體公式:key/(總?cè)藬?shù)*指定人數(shù))
如果key的值設(shè)置為10,系統(tǒng)將會產(chǎn)生特等獎,獲得者為制定人員的第一項,但是除了特等獎,不會再對其他人員有任何操作(相當(dāng)于只能產(chǎn)生特等獎)。
其他一些說明讀者自己去看程序,這里不再贅述。程序很簡單(在后面的):
posted @
2008-08-13 17:20 志遙 閱讀(3474) |
評論 (4) |
編輯 收藏