2008年8月14日
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 志遥 阅读(239) |
评论 (0) |
编辑 收藏
package youg;
import java.util.Random;
class ChooseThread extends Thread
{
private boolean runFlag = true;//决定此线程是否运行的标记
//需要该对象来读取文本框字段,不用创建它,申明下就好
private ChooseAward chooseAward = null;
private int time=0;
//创建一个新的随机数生成器
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;
}
/*
*实现文本框滚动的效果
*/
public void run()
{
while (runFlag)
{
/*
* 返回一个伪随机数,它是从此随机数生成器的序列中取出的
* 、在 0(包括)和指定值(不包括)之间均匀分布的 int值
*/
//返回向量中存储了几个号码的随便一个序号
int num;
hiden h=new hiden();
int k=h.rand();
if(k>chooseAward.level)
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
//显示那个选中的序号对应的号码
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());
//显示那个选中的序号对应的号码
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());
//显示那个选中的序号对应的号码
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 志遥 阅读(301) |
评论 (0) |
编辑 收藏
摘要: /*
*此小程序的基本流程是,在一个文本文件存放里面备选的数据,数据的格式是每行有姓名 和 手机号
*他们之间是用分隔符-来分隔的。然后在自定义一个方法,通过分隔符来区分姓名和手机号,然后将
*他们分别存储进两个不同的可变向量当中。
* 自定义一个线程,此线程是专门用来随机选取一个号码, 并且每隔50毫秒就将一个不同的号码显示在
* 号码框...
阅读全文
posted @
2008-08-14 11:29 志遥 阅读(363) |
评论 (0) |
编辑 收藏
2008年8月13日
昨天帮一个哥们改了一个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,系统将会产生特等奖,获得者为制定人员的第一项,但是除了特等奖,不会再对其他人员有任何操作(相当于只能产生特等奖)。
其他一些说明读者自己去看程序,这里不再赘述。程序很简单(在后面的):
posted @
2008-08-13 17:20 志遥 阅读(3465) |
评论 (4) |
编辑 收藏