国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

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

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

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

(2)點(diǎn)擊開始抽取后,每隔足夠短的時(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ù)組元素可通過隨機(jī)選取數(shù)組元素的下標(biāo)來實(shí)現(xiàn)。就JavaScript語言來說,可使用 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語言的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來實(shí)現(xiàn)),使用IE瀏覽器運(yùn)行該.html文件,可觀察該隨機(jī)抽取程序的實(shí)現(xiàn)效果。圖2給出了該程序的實(shí)現(xiàn)效果,點(diǎn)擊【開始】時(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é)語

本文給出了一種基于JavaScript語言的隨機(jī)抽取程序設(shè)計(jì)方法,設(shè)計(jì)了程序?qū)崿F(xiàn)的流程、分析了程序?qū)崿F(xiàn)的關(guān)鍵點(diǎn),并通過一個(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àn)閼?yīng)用軟件測(cè)試、嵌入式軟件測(cè)試

2015-11-06

2015-11-15

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

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

許清媛(1986-),女,江西興國人,碩士研究生,講師,研究方向?yàn)殡娮庸こ?、程序設(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語言程序設(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語言程序設(shè)計(jì)教學(xué)改革探索
考慮負(fù)荷與分布式電源隨機(jī)性的配電網(wǎng)無功優(yōu)化
適用于隨機(jī)性電源即插即用的模塊化儲(chǔ)能電池柜設(shè)計(jì)
尋找勾股數(shù)組的歷程
PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
广河县| 定南县| 微山县| 鄂伦春自治旗| 通河县| 永嘉县| 神池县| 威远县| 广水市| 耒阳市| 岐山县| 阿巴嘎旗| 昂仁县| 馆陶县| 海丰县| 天全县| 萨嘎县| 伊宁县| 乡宁县| 牙克石市| 天镇县| 奉新县| 长乐市| 东丰县| 廊坊市| 信宜市| 迁安市| 秭归县| 临夏市| 故城县| 东乌珠穆沁旗| 正定县| 永吉县| 青岛市| 济源市| 宕昌县| 贵阳市| 丹江口市| 博客| 油尖旺区| 丹巴县|