• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于JavaScript的一種隨機(jī)抽取程序設(shè)計(jì)

      2015-09-28 05:04:27許朋許清媛
      現(xiàn)代計(jì)算機(jī) 2015年33期
      關(guān)鍵詞:隨機(jī)性數(shù)組程序設(shè)計(jì)

      許朋,許清媛

      (1.工業(yè)和信息化部電子第五研究所,廣州 510610;2.中山大學(xué)南方學(xué)院電子通信與軟件工程系,廣州 510970)

      基于JavaScript的一種隨機(jī)抽取程序設(shè)計(jì)

      許朋1,許清媛2

      (1.工業(yè)和信息化部電子第五研究所,廣州510610;2.中山大學(xué)南方學(xué)院電子通信與軟件工程系,廣州510970)

      0 引言

      為保證某項(xiàng)活動(dòng)的公平、公正,經(jīng)常需要從一定量數(shù)據(jù)中隨機(jī)抽取一個(gè)或多個(gè)數(shù)據(jù)。例如,在項(xiàng)目招標(biāo)評(píng)審過(guò)程中,為了保證評(píng)標(biāo)的公平性,需要從專家?guī)熘须S機(jī)抽取若干個(gè)評(píng)標(biāo)專家[2];在中小客車牌照搖號(hào),隨機(jī)從眾多申請(qǐng)者中抽取一部分人;為避免考試試題的泄露、保證考試的公平性,需要在臨近考試前從海量試題庫(kù)中隨機(jī)抽取若干道試題形成考試試卷[3];在抽獎(jiǎng)晚會(huì)上,從所有參與人員中隨機(jī)抽取若干個(gè)中獎(jiǎng)人等。在這些抽取活動(dòng)中,大多需要在公開(kāi)場(chǎng)合進(jìn)行隨機(jī)抽取。傳統(tǒng)上可能采用人工隨機(jī)抽取的方法,例如抓鬮等。然而,人工隨機(jī)抽取大多存在工作效率低、管理不規(guī)范、隨機(jī)性差、容易作弊、公平性低等缺點(diǎn)[2]。由計(jì)算機(jī)實(shí)現(xiàn)隨機(jī)抽取則可以克服這些缺點(diǎn)和問(wèn)題。

      JavaScript語(yǔ)言是一種直譯式、弱類型、基于原型的腳本語(yǔ)言[1]。它的解釋器JavaScript引擎是瀏覽器的一部分,JavaScript腳本通過(guò)嵌入在HTML網(wǎng)頁(yè)中來(lái)實(shí)現(xiàn)自身的功能,已被廣泛用于Web應(yīng)用開(kāi)發(fā)中[1],為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果[1]。本文將介紹一種基于JavaScript腳本語(yǔ)言在客戶端實(shí)現(xiàn)隨機(jī)抽取的程序設(shè)計(jì)思路,說(shuō)明其實(shí)現(xiàn)方法、證明其隨機(jī)性。

      1 隨機(jī)抽取程序設(shè)計(jì)

      隨機(jī)抽取的程序可按照?qǐng)D1所示流程設(shè)計(jì):

      (1)將待抽取的所有數(shù)據(jù)(如所有參與中小客車搖號(hào)的人)組織起來(lái),存放在“待抽取數(shù)組”中;

      (2)點(diǎn)擊開(kāi)始抽取后,每隔足夠短的時(shí)間隨機(jī)選擇“待抽取數(shù)組”中的一個(gè)元素在界面上顯示,形成被選中元素(數(shù)據(jù))在界面上快速刷新顯示(閃爍)的效果;

      (3)點(diǎn)擊停止抽取后,界面停止閃爍后顯示的數(shù)組元素作為被抽中的一個(gè)數(shù)據(jù),將該數(shù)據(jù)保存“抽取結(jié)果數(shù)組”中;

      (4)將被抽中的元素(數(shù)據(jù))從“待抽取數(shù)組”中刪除;

      (5)判斷“抽取結(jié)果數(shù)組”中抽取數(shù)據(jù)的數(shù)量是否滿足要求,若滿足要求則終止程序;若不滿足要求,則在“待抽取數(shù)組”不為空的情況下繼續(xù)下一次抽取,直到抽取數(shù)據(jù)的數(shù)量是否滿足要求為止。

      在該隨機(jī)抽取程序設(shè)計(jì)中,為滿足抽取的隨機(jī)性要求(即每個(gè)元素(數(shù)據(jù))被抽中的概率相等),需要滿足一下要求:

      (1)每次抽取“待抽取數(shù)組”中的一個(gè)元素在界面上顯示時(shí)都要隨機(jī)抽取;

      (2)要間隔足夠短的時(shí)間(小于人的反應(yīng)時(shí)間)抽取下一個(gè)元素(數(shù)據(jù))并顯示在界面上,形成被抽取元素(數(shù)據(jù))在界面上快速切換的效果,避免因人為選擇某個(gè)元素(數(shù)據(jù))而影響最終抽取結(jié)果的隨機(jī)性。

      圖1 隨機(jī)抽取程序流程圖

      2 程序?qū)崿F(xiàn)分析

      (1)隨機(jī)抽取“待抽取數(shù)組”中數(shù)組元素的實(shí)現(xiàn)

      隨機(jī)抽取“待抽取數(shù)組”中的數(shù)組元素可通過(guò)隨機(jī)選取數(shù)組元素的下標(biāo)來(lái)實(shí)現(xiàn)。就JavaScript語(yǔ)言來(lái)說(shuō),可使用 Math.random()方法和 parseInt()方法實(shí)現(xiàn)[1]。Math.random()方法可隨機(jī)產(chǎn)生大于等于0.0且小于1.0的浮點(diǎn)數(shù),parseInt()方法可實(shí)現(xiàn)浮點(diǎn)數(shù)的取下整運(yùn)算。假設(shè)ArrayLength表示 “待抽取數(shù)組”的長(zhǎng)度,則parseInt(Math.random()*(ArrayLength))可得到隨機(jī)選取的“待抽取數(shù)組”的下標(biāo)。

      需要注意的是,parseInt()方法是取下整,而不是四舍五入取整,若使用四舍五入取整(如Math.round()),則每個(gè)“待抽取數(shù)組”下標(biāo)被選中的概率就不相等。

      (2)“待抽取數(shù)組”的元素在界面上快速刷新顯示和停止刷新的實(shí)現(xiàn)

      “待抽取數(shù)組”的元素在界面上快速刷新顯示和停止刷新,可使用JavaScript語(yǔ)言的setInterval(,)方法和clearInterval()方法實(shí)現(xiàn)[1]。使用setInterval(,)方法可實(shí)現(xiàn)每隔若干毫秒執(zhí)行一次界面刷新操作,進(jìn)而實(shí)現(xiàn)“待抽取數(shù)組”的元素在界面上快速刷新顯示的效果。clearInterval()方法可停止界面刷新,進(jìn)而得到被隨機(jī)抽中的元素(數(shù)據(jù))。

      其中,setInterval(,)方法可實(shí)現(xiàn)每隔若干毫秒執(zhí)行一次界面刷新操作,只要界面刷新的時(shí)間間隔足夠小,則可避免人為去選擇某個(gè)元素(數(shù)據(jù)),進(jìn)而可保證最終抽取結(jié)果的隨機(jī)性。

      3 程序?qū)崿F(xiàn)實(shí)例

      基于以上的隨機(jī)抽取程序設(shè)計(jì)和程序?qū)崿F(xiàn)分析,

      給出了從數(shù)據(jù)“001,002,003,004,005,006,007,008,

      009,010,011,012,013,014,015”中隨機(jī)抽取幾個(gè)數(shù)據(jù)

      (小于15個(gè))的JavaScript程序?qū)崿F(xiàn):

      將該程序代碼放在.html中 (可放在.txt文檔中并修改后綴為.html來(lái)實(shí)現(xiàn)),使用IE瀏覽器運(yùn)行該.html文件,可觀察該隨機(jī)抽取程序的實(shí)現(xiàn)效果。圖2給出了該程序的實(shí)現(xiàn)效果,點(diǎn)擊【開(kāi)始】時(shí),程序每次隨機(jī)選取“001,002,003,004,005,006,007,008,009,010,011,

      012,013,014,015”中的一個(gè)數(shù)據(jù)顯示并進(jìn)行快速更新,點(diǎn)擊【停止】時(shí),程序?qū)⒆詈箫@示的數(shù)據(jù)展現(xiàn)在界面上,實(shí)現(xiàn)了隨機(jī)抽取。

      圖2 隨機(jī)抽取程序?qū)崿F(xiàn)效果圖

      4 結(jié)語(yǔ)

      本文給出了一種基于JavaScript語(yǔ)言的隨機(jī)抽取程序設(shè)計(jì)方法,設(shè)計(jì)了程序?qū)崿F(xiàn)的流程、分析了程序?qū)崿F(xiàn)的關(guān)鍵點(diǎn),并通過(guò)一個(gè)實(shí)例展現(xiàn)了隨機(jī)抽取程序?qū)崿F(xiàn)結(jié)果。

      [1]Nicholas C.Zakas.Professional JavaScript for Web Developers,Third Edition.John Wiley&Sons,Inc.2012.

      [2]陳衛(wèi)平.建設(shè)工程評(píng)標(biāo)專家隨機(jī)抽取系統(tǒng).科技信息,2010(09).

      [3]劉旭旭.基于B/S模式的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).醫(yī)藥與保健,2010,18(3).

      Random Sampling;JavaScript;Program Design

      A Random Sampling Program Design Based on JavaScript

      XU Peng1,XU Qing-yuan2
      (1.The 5th Electronics Research Institute of MII,Guangzhou 510610;2.Department of Electronic Communication&Software Engineering,Nanfang Colloge,Sun Yat-sen University,Guangzhou 510970)

      1007-1423(2015)33-0063-04

      10.3969/j.issn.1007-1423.2015.33.017

      許朋(1985-),男,河南南陽(yáng)人,碩士研究生,工程師,研究方向?yàn)閼?yīng)用軟件測(cè)試、嵌入式軟件測(cè)試

      2015-11-06

      2015-11-15

      日常生活中經(jīng)常需要從一定量數(shù)據(jù)中隨機(jī)抽取一個(gè)或多個(gè)數(shù)據(jù)。介紹一種基于JavaScript語(yǔ)言的隨機(jī)抽取程序設(shè)計(jì)方法,設(shè)計(jì)程序?qū)崿F(xiàn)的流程、分析程序?qū)崿F(xiàn)的關(guān)鍵點(diǎn),并通過(guò)一個(gè)實(shí)例展現(xiàn)隨機(jī)抽取程序?qū)崿F(xiàn)效果。

      隨機(jī)抽??;JavaScript;程序設(shè)計(jì)

      許清媛(1986-),女,江西興國(guó)人,碩士研究生,講師,研究方向?yàn)殡娮庸こ獭⒊绦蛟O(shè)計(jì)

      In daily life,one or more data is often needed to be randomly selected from a certain amount of data.Introduces a method to design a random sampling program based on JavaScript.The program flow chart is designed,analyzes the key points of programing,by an example,demonstrates the implementation effect of the random sampling program.

      猜你喜歡
      隨機(jī)性數(shù)組程序設(shè)計(jì)
      JAVA稀疏矩陣算法
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      淺析電網(wǎng)規(guī)劃中的模糊可靠性評(píng)估方法
      高職高專院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      考慮負(fù)荷與分布式電源隨機(jī)性的配電網(wǎng)無(wú)功優(yōu)化
      適用于隨機(jī)性電源即插即用的模塊化儲(chǔ)能電池柜設(shè)計(jì)
      尋找勾股數(shù)組的歷程
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      安乡县| 南城县| 马边| 徐汇区| 永州市| 酒泉市| 新竹县| 定兴县| 邢台市| 彭阳县| 三穗县| 信丰县| 宁津县| 泸水县| 遂平县| 永定县| 靖安县| 咸宁市| 孟津县| 新巴尔虎左旗| 彭水| 鄂托克前旗| 青田县| 兴和县| 淳化县| 英超| 乐东| 宁化县| 乡宁县| 横峰县| 延津县| 霸州市| 元氏县| 华亭县| 秦安县| 南陵县| 获嘉县| 随州市| 右玉县| 精河县| 延寿县|