随笔-4  评论-4  文章-0  trackbacks-0
  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 志遥 阅读(172) | 评论 (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 志遥 阅读(184) | 评论 (0)编辑 收藏
     摘要: /* *此小程序的基本流程是,在一个文本文件存放里面备选的数据,数据的格式是每行有姓名 和 手机号 *他们之间是用分隔符-来分隔的。然后在自定义一个方法,通过分隔符来区分姓名和手机号,然后将 *他们分别存储进两个不同的可变向量当中。 *   自定义一个线程,此线程是专门用来随机选取一个号码, 并且每隔50毫秒就将一个不同的号码显示在 *   号码框...  阅读全文
posted @ 2008-08-14 11:29 志遥 阅读(288) | 评论 (0)编辑 收藏
  2008年8月13日

昨天帮一个哥们改了一个JAVA的模拟抽奖程序,有点意思。自己还给它加了一个暗箱,嘿嘿。暗箱还是比较暗,而且作用效果不错,准备再改改。改好了发源码!

本程序用于模拟抽奖,可用于日常的单位、公司进行抽奖活动。

具体的算法思想是:

首先从一个文本文件中读取参加抽奖的人员信息,该信息有一定的格式既:姓名-手机号码(根据具体情况而定,切记中间是字符“-”,否则无法读入)。如下图:

程序将读入的信息装入两个VECTOR中(v_identNumberv_name)。点击“开始”按钮进行抽奖操作。

后台的数据产生是利用JAVA的伪随机函数。根据随机数产生展现在前台的字符,每次间隔的时间是0.05秒。

用户点击“停止”按钮,操作线程就挂起,这时产生相应的中奖号码(即前台展示的号码),中奖号码存储在v_printident中。v_printident同样是VECTOR类型的。

本系统设置的是将产生33等奖,22等奖,11等奖还有一个特等奖。系统将根据用户点击按钮次数来确定产生几等奖。

奖项全部产生以后,点击保存,可以将结果信息保存在当前目录下的result.txt中。

关于暗箱的说明:

基本说明:

暗箱操作不是光明正大的行为,但是作为一个小小的研究对象,本人觉得还是有点意思。

具体功能:

可以实现对制定人员的获奖操作,可以实现对特等奖的产生操作。

实现机制:

首先,用户读入指定获奖的人员文件,数据的格式为:姓名*号码切记是(“*”,否则无法读入)。在人员文件的最后一行,是控制中奖力度的key,具体格式为“ *key”(切记前面要有一个空格键),如下图:

关于key的说明:

Key的值可以设置110,如果没有在这个范围,系统将自动设置key5

系统的key设置得越大,指定人员的获奖概率就越大。具体公式:key/(总人数*指定人数)

如果key的值设置为10,系统将会产生特等奖,获得者为制定人员的第一项,但是除了特等奖,不会再对其他人员有任何操作(相当于只能产生特等奖)。

其他一些说明读者自己去看程序,这里不再赘述。程序很简单(在后面的):

posted @ 2008-08-13 17:20 志遥 阅读(3085) | 评论 (4)编辑 收藏
仅列出标题