隨筆-4  評(píng)論-4  文章-0  trackbacks-0
            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 志遙 閱讀(255) | 評(píng)論 (0)編輯 收藏

          package youg;

          import java.util.Random;

          class ChooseThread extends Thread
          {
                  private boolean runFlag = true;//決定此線程是否運(yùn)行的標(biāo)記
                  //需要該對(duì)象來(lái)讀取文本框字段,不用創(chuàng)建它,申明下就好
                  private ChooseAward chooseAward = null;
                  private int time=0;
                  //創(chuàng)建一個(gè)新的隨機(jī)數(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++;//每點(diǎn)擊一次加一
                  }

                  public void changeflag_stop()
                  {
                          runFlag = false;
                  }

                  /*
                   *實(shí)現(xiàn)文本框滾動(dòng)的效果
                   */
                  public void run()
                  {
                   
                   while (runFlag)
                          {
                                  /*
                                   * 返回一個(gè)偽隨機(jī)數(shù),它是從此隨機(jī)數(shù)生成器的序列中取出的
                                   * 、在 0(包括)和指定值(不包括)之間均勻分布的 int值
                                   */
                                  //返回向量中存儲(chǔ)了幾個(gè)號(hào)碼的隨便一個(gè)序號(hào)
                           int num; 
                           hiden h=new hiden();
                           int k=h.rand();
                              if(k>chooseAward.level)
                              {
                           num = randomNumber.nextInt(chooseAward.v_identNumber.size());
                            
                           //顯示那個(gè)選中的序號(hào)對(duì)應(yīng)的號(hào)碼
                              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());
                              
                               //顯示那個(gè)選中的序號(hào)對(duì)應(yīng)的號(hào)碼
                                  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());
                              
                               //顯示那個(gè)選中的序號(hào)對(duì)應(yīng)的號(hào)碼
                                  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 志遙 閱讀(312) | 評(píng)論 (0)編輯 收藏
               摘要: /* *此小程序的基本流程是,在一個(gè)文本文件存放里面?zhèn)溥x的數(shù)據(jù),數(shù)據(jù)的格式是每行有姓名 和 手機(jī)號(hào) *他們之間是用分隔符-來(lái)分隔的。然后在自定義一個(gè)方法,通過(guò)分隔符來(lái)區(qū)分姓名和手機(jī)號(hào),然后將 *他們分別存儲(chǔ)進(jìn)兩個(gè)不同的可變向量當(dāng)中。 *   自定義一個(gè)線程,此線程是專門用來(lái)隨機(jī)選取一個(gè)號(hào)碼, 并且每隔50毫秒就將一個(gè)不同的號(hào)碼顯示在 *   號(hào)碼框...  閱讀全文
          posted @ 2008-08-14 11:29 志遙 閱讀(373) | 評(píng)論 (0)編輯 收藏

          昨天幫一個(gè)哥們改了一個(gè)JAVA的模擬抽獎(jiǎng)程序,有點(diǎn)意思。自己還給它加了一個(gè)暗箱,嘿嘿。暗箱還是比較暗,而且作用效果不錯(cuò),準(zhǔn)備再改改。改好了發(fā)源碼!

          本程序用于模擬抽獎(jiǎng),可用于日常的單位、公司進(jìn)行抽獎(jiǎng)活動(dòng)。

          具體的算法思想是:

          首先從一個(gè)文本文件中讀取參加抽獎(jiǎng)的人員信息,該信息有一定的格式既:姓名-手機(jī)號(hào)碼(根據(jù)具體情況而定,切記中間是字符“-”,否則無(wú)法讀入)。如下圖:

          程序?qū)⒆x入的信息裝入兩個(gè)VECTOR中(v_identNumberv_name)。點(diǎn)擊“開(kāi)始”按鈕進(jìn)行抽獎(jiǎng)操作。

          后臺(tái)的數(shù)據(jù)產(chǎn)生是利用JAVA的偽隨機(jī)函數(shù)。根據(jù)隨機(jī)數(shù)產(chǎn)生展現(xiàn)在前臺(tái)的字符,每次間隔的時(shí)間是0.05秒。

          用戶點(diǎn)擊“停止”按鈕,操作線程就掛起,這時(shí)產(chǎn)生相應(yīng)的中獎(jiǎng)號(hào)碼(即前臺(tái)展示的號(hào)碼),中獎(jiǎng)號(hào)碼存儲(chǔ)在v_printident中。v_printident同樣是VECTOR類型的。

          本系統(tǒng)設(shè)置的是將產(chǎn)生3個(gè)3等獎(jiǎng),2個(gè)2等獎(jiǎng),1個(gè)1等獎(jiǎng)還有一個(gè)特等獎(jiǎng)。系統(tǒng)將根據(jù)用戶點(diǎn)擊按鈕次數(shù)來(lái)確定產(chǎn)生幾等獎(jiǎng)。

          獎(jiǎng)項(xiàng)全部產(chǎn)生以后,點(diǎn)擊保存,可以將結(jié)果信息保存在當(dāng)前目錄下的result.txt中。

          關(guān)于暗箱的說(shuō)明:

          基本說(shuō)明:

          暗箱操作不是光明正大的行為,但是作為一個(gè)小小的研究對(duì)象,本人覺(jué)得還是有點(diǎn)意思。

          具體功能:

          可以實(shí)現(xiàn)對(duì)制定人員的獲獎(jiǎng)操作,可以實(shí)現(xiàn)對(duì)特等獎(jiǎng)的產(chǎn)生操作。

          實(shí)現(xiàn)機(jī)制:

          首先,用戶讀入指定獲獎(jiǎng)的人員文件,數(shù)據(jù)的格式為:姓名*號(hào)碼切記是(“*”,否則無(wú)法讀入)。在人員文件的最后一行,是控制中獎(jiǎng)力度的key,具體格式為“ *key”(切記前面要有一個(gè)空格鍵),如下圖:

          關(guān)于key的說(shuō)明:

          Key的值可以設(shè)置110,如果沒(méi)有在這個(gè)范圍,系統(tǒng)將自動(dòng)設(shè)置key5

          系統(tǒng)的key設(shè)置得越大,指定人員的獲獎(jiǎng)概率就越大。具體公式:key/(總?cè)藬?shù)*指定人數(shù))

          如果key的值設(shè)置為10,系統(tǒng)將會(huì)產(chǎn)生特等獎(jiǎng),獲得者為制定人員的第一項(xiàng),但是除了特等獎(jiǎng),不會(huì)再對(duì)其他人員有任何操作(相當(dāng)于只能產(chǎn)生特等獎(jiǎng))。

          其他一些說(shuō)明讀者自己去看程序,這里不再贅述。程序很簡(jiǎn)單(在后面的):

          posted @ 2008-08-13 17:20 志遙 閱讀(3481) | 評(píng)論 (4)編輯 收藏
          主站蜘蛛池模板: 马关县| 黄陵县| 乌苏市| 和田市| 栾川县| 吉木乃县| 酉阳| 灵山县| 鄂尔多斯市| 连山| 大新县| 永清县| 大石桥市| 新余市| 洛阳市| 雅江县| 新乡市| 虎林市| 侯马市| 庆城县| 道孚县| 连江县| 公主岭市| 邵东县| 土默特左旗| 江安县| 邵武市| 绥化市| 阿合奇县| 颍上县| 禄丰县| 饶河县| 新田县| 西安市| 阳城县| 沂南县| 手游| 巴林右旗| 炎陵县| 仙桃市| 石首市|