亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        WEB應(yīng)用中產(chǎn)生大量不同隨機(jī)數(shù)的方法

        2010-01-15 00:37:10李幼平
        關(guān)鍵詞:排序數(shù)據(jù)庫方法

        李幼平

        (武漢工業(yè)學(xué)院計(jì)算機(jī)與信息工程系,湖北武漢 430023)

        WEB應(yīng)用中產(chǎn)生大量不同隨機(jī)數(shù)的方法

        李幼平

        (武漢工業(yè)學(xué)院計(jì)算機(jī)與信息工程系,湖北武漢 430023)

        在計(jì)算機(jī)應(yīng)用中,很多時(shí)候需要大量產(chǎn)生不同隨機(jī)數(shù),傳統(tǒng)的利用數(shù)組獲取不同隨機(jī)數(shù)的方法效率低,在隨機(jī)數(shù)要求大量時(shí)更顯得無能為力,尤其在WEB應(yīng)用中,客戶端的不斷請求很容易加大服務(wù)器的負(fù)荷而無法完成,本文通過數(shù)據(jù)庫排序隨機(jī)與隨機(jī)數(shù)分段相結(jié)合的方法,有效的解決了此類問題。

        WEB;大量;不同;隨機(jī)數(shù)

        在一些應(yīng)用中,需要產(chǎn)生大量的不同隨機(jī)數(shù),過去采用數(shù)組的方法只能產(chǎn)生少量的隨機(jī)數(shù),而且效率低下。當(dāng)需要產(chǎn)生大于萬級的不同隨機(jī)數(shù)的時(shí)候,此類方法則無能為力。當(dāng)前網(wǎng)絡(luò)技術(shù)應(yīng)用盛行的今天,特別是 INTERNET的快速發(fā)展,基于 WEB的應(yīng)用程序由于其方便易用的特點(diǎn)而成為網(wǎng)絡(luò)應(yīng)用的一大趨勢。各種基于 B/S模式的應(yīng)用程序應(yīng)運(yùn)而生。此類程序的共同特點(diǎn)是:所有的WEB應(yīng)用程序都安裝在服務(wù)器端,客戶端只需要安裝W INDOWS自帶的 IE瀏覽器,不需要再安裝其它的程序,由于不需要安裝客戶端的專用程序而正逐漸成為網(wǎng)絡(luò)應(yīng)用的主流。其應(yīng)用程序執(zhí)行的過程是,客戶端把請求通過 POST或 GET的方法傳遞給服務(wù)器端,該請求經(jīng)服務(wù)器程序解釋執(zhí)行后以 HT ML的形式把執(zhí)行結(jié)果顯示于客戶端。因此客戶端只是發(fā)送請求和顯示程序執(zhí)行結(jié)果。正是由于應(yīng)用程序全部由服務(wù)器完成,當(dāng)需要產(chǎn)生大量的不同隨機(jī)數(shù)時(shí),由于所有的運(yùn)算都在服務(wù)器端完成。如果不斷的產(chǎn)生隨機(jī)數(shù)并要求這些產(chǎn)生隨機(jī)數(shù)不同,過多的運(yùn)算很容易造成服務(wù)器的負(fù)載過重,使得服務(wù)器僅忙于應(yīng)付這種運(yùn)算,浪費(fèi)資源和時(shí)間。更為重要的是,在報(bào)刊發(fā)行的數(shù)據(jù)抽樣統(tǒng)計(jì)中,樣本數(shù)幾乎都是以萬級來抽樣的,這些以萬級的樣本數(shù)都要求是不同的,因此采用過去利用隨機(jī)數(shù)組成數(shù)組的方法無能為力。本文通過數(shù)據(jù)庫排序隨機(jī)以及分段隨機(jī)截取的方法有效的解決了此類問題。

        1 產(chǎn)生不同隨機(jī)數(shù)的常用方法及弊端

        產(chǎn)生不同的隨機(jī)數(shù),最常見的方法是,利用隨機(jī)函數(shù)在給定的范圍內(nèi)產(chǎn)生隨機(jī)數(shù),并使產(chǎn)生的隨機(jī)數(shù)組成數(shù)組,以后每產(chǎn)生一個(gè)隨機(jī)數(shù)都跟已有的數(shù)組元素做比較,如果數(shù)組中不存在,則加入到數(shù)組中,否則繼續(xù)生成,由于每次都必須跟已有的數(shù)組元素逐個(gè)做比較,效率非常低下,當(dāng)需要的不同隨機(jī)數(shù)個(gè)數(shù)很多的時(shí)候,則無能為力了,因此此種方法僅能應(yīng)用到只需要產(chǎn)生少量隨機(jī)數(shù)的情況[1]。

        在報(bào)刊發(fā)行中,經(jīng)常需要對已有的數(shù)據(jù)做抽樣統(tǒng)計(jì)和分析,而且需要抽取的數(shù)據(jù)盡量是隨機(jī)的,滿足統(tǒng)計(jì)學(xué)上的隨機(jī),由于報(bào)刊發(fā)行量都是很大,做一次小的抽樣調(diào)查都往往需要以千次計(jì)算,尤其在WEB應(yīng)用中的在線調(diào)查中,采用以上方法對服務(wù)器端的資源占用過大,增加了服務(wù)器的負(fù)荷,因此采用數(shù)組的方法是不可取的。

        2 實(shí)現(xiàn)方法描述

        以報(bào)刊發(fā)行為例,在報(bào)刊發(fā)行中,假設(shè)要抽取幾萬的用戶做調(diào)查和統(tǒng)計(jì),這些用戶的選取必須是隨機(jī)的。在抽取這些數(shù)據(jù)之前,這些用戶的數(shù)據(jù)已經(jīng)保存到數(shù)據(jù)庫中,這些數(shù)據(jù)往往是按一定的順序保存在其中的某個(gè)表中,假設(shè)數(shù)據(jù)庫中的用戶總量為n,如果要隨機(jī)抽取其中的 i位用戶,則只要產(chǎn)生一個(gè)隨機(jī)數(shù) r,該隨機(jī)數(shù)滿足 r+i<=n,截取其中的 r+i個(gè)用戶,就實(shí)現(xiàn)了隨機(jī)抽取的不同用戶的結(jié)果,如圖1所示。

        圖1 用戶所有的記錄數(shù)

        用以上方法可以獲取不同的隨機(jī)數(shù),其實(shí)現(xiàn)原理為[2]:首先利用隨機(jī)函數(shù)生成一隨機(jī)種子 r,其大小介于 1~n之間,該數(shù)同時(shí)滿足 r+i<=n,其中 i為要抽取的隨機(jī)數(shù)的個(gè)數(shù),且 r+i<=n,因此實(shí)際上是在 1—n之間隨機(jī)的截取 r+i這部分的不同數(shù),由于 r是隨機(jī)的,因此截取的這一段數(shù)據(jù)也就是隨機(jī)的,從而實(shí)現(xiàn)了隨機(jī)產(chǎn)生大量不同的隨機(jī)數(shù)。但由于是分段截取的,因此每次產(chǎn)生的數(shù)的順序是連在一起的,并不是真正意義上的隨機(jī),在一些應(yīng)用中并不能滿足需求,因此,如果在此之前先讓數(shù)據(jù)庫中的表的順序隨機(jī)排序,再在此基礎(chǔ)上做上述截取,則很好的實(shí)現(xiàn)了真正意義上的隨機(jī),一次產(chǎn)生大量不同隨機(jī)數(shù)的方法是:先使數(shù)據(jù)庫中的表中記錄隨機(jī),在此基礎(chǔ)上再隨機(jī)截取其中的某一段記錄,從而獲取了大量不同的隨機(jī)數(shù),而且效率高。

        3 具體實(shí)現(xiàn)過程

        3.1 實(shí)現(xiàn)數(shù)據(jù)庫表中的數(shù)據(jù)隨機(jī)

        假設(shè)數(shù)據(jù)表名為 table,獲取隨機(jī)排序的 SQL語句可以這樣書寫[3]:

        SELECT * FROM users ORDER BYRAND()LIMIT 1。

        ORDER BY RAND()實(shí)現(xiàn)了對數(shù)據(jù)表隨機(jī)排序的功能,這是 SQL語句的隨機(jī)排序語法。但在實(shí)際測試中才發(fā)現(xiàn)這樣書寫效率非常低下。因?yàn)檫@樣會(huì)導(dǎo)致數(shù)據(jù)列被多次掃描,在測試中發(fā)現(xiàn),一個(gè) 15萬余條的庫,查詢 5條數(shù)據(jù),居然要 8秒以上,更不用說查詢的數(shù)據(jù)更多。rand()放在 ORDER BY子句中會(huì)被執(zhí)行多次,自然效率極低。

        在基于WEB的應(yīng)用程序中,由于程序在服務(wù)器端執(zhí)行,這種掃描當(dāng)然會(huì)給服務(wù)器帶來巨大負(fù)荷,為了降低服務(wù)器的負(fù)荷,經(jīng)過多次實(shí)驗(yàn)后采用如下代碼:

        以上語句中去掉了 ORDER BY RAND(),而加入了 join語法,從實(shí)際測試中發(fā)現(xiàn),利用 sql本身的語法在執(zhí)行效率上要比用 RAND()函數(shù)隨機(jī)排序的效率高很多,在實(shí)際測試中,用上面的語句做 10次查詢測試,所用的時(shí)間為 0.015100 s,這樣就高效的實(shí)現(xiàn)了數(shù)據(jù)庫中表的隨機(jī)排序問題。

        3.2 對產(chǎn)生的數(shù)據(jù)分段再排序

        產(chǎn)生一定范圍的隨機(jī)數(shù)截取已經(jīng)隨機(jī)排序的數(shù)據(jù)表的一部分[4]:

        total為數(shù)據(jù)表中所有的總記錄數(shù),yangnum為需要抽樣的樣本數(shù),savevote函數(shù)把截取的各隨機(jī)數(shù)保存到數(shù)據(jù)表 chouyang中,用以上方法實(shí)現(xiàn)了截取已經(jīng)隨機(jī)排序的記錄中的一部分,由于排序隨機(jī)和截取隨機(jī)兩方面的結(jié)合,很好高效的實(shí)現(xiàn)了大量產(chǎn)生不同隨機(jī)數(shù)的結(jié)果。

        4 算法分析

        在此算法中,由于是經(jīng)過數(shù)據(jù)庫排序和截取兩次隨機(jī),最大限度的實(shí)現(xiàn)了統(tǒng)計(jì)學(xué)意義上的隨機(jī),因此更好的保證了統(tǒng)計(jì)數(shù)據(jù)的準(zhǔn)確性和可靠性,由于是基于WEB的應(yīng)用,因此還要考慮對服務(wù)器的負(fù)荷盡可能的小,尤其是在WEB應(yīng)用中多次產(chǎn)生大量不同隨機(jī)數(shù)的時(shí)候,數(shù)據(jù)庫隨機(jī)排序的算法要盡可能的少占用服務(wù)器的資源,在實(shí)際的測試中,經(jīng)過多次實(shí)驗(yàn)發(fā)現(xiàn),采用在 sql語句中用 JO IN的語法比直接在WHERE中使用函數(shù)效率還要高很多。在分段截取算法中,由于實(shí)際上只是產(chǎn)生了一個(gè)隨機(jī)數(shù),因此不會(huì)對服務(wù)器造成大的負(fù)荷。在整個(gè)運(yùn)算過程中,由于兩個(gè)優(yōu)化算法的兩次隨機(jī),既滿足了產(chǎn)生大量不同隨機(jī)數(shù)的結(jié)果,也大大提高了整個(gè)應(yīng)用的執(zhí)行效率。

        5 結(jié)束語

        產(chǎn)生隨機(jī)數(shù)的方法很多[5],但在 web應(yīng)用中大量產(chǎn)生不同隨機(jī)數(shù)的算法則要求特別,既要能實(shí)現(xiàn)產(chǎn)生大量不同隨機(jī)數(shù)的結(jié)果,又要高效,并且對服務(wù)器的影響盡可能的小。在文中所論述的算法中,運(yùn)用數(shù)據(jù)庫隨機(jī)排序和隨機(jī)分段截取的方法,很好的滿足了上述特殊要求,既產(chǎn)生了大量的不同隨機(jī)數(shù),也減少了對服務(wù)器的影響,而且產(chǎn)生的隨機(jī)數(shù)滿足了統(tǒng)計(jì)意義上的隨機(jī),對統(tǒng)計(jì)的科學(xué)性提供了技術(shù)保障。

        [1] 李幼平.隨機(jī)數(shù)的捕獲及其基于WEB的應(yīng)用[J].微電子學(xué)與計(jì)算機(jī),2005,16(1):26-27.

        [2] 趙雪峰.一種偽隨機(jī)數(shù)生成算法的研究與實(shí)現(xiàn) [J].電腦學(xué)習(xí),2005(12):25-26.

        [3] 計(jì)奎.利用 windows時(shí)間函數(shù)生成服從正態(tài)分布的隨機(jī)數(shù) [J].測繪信息與工程,2004,29(2):19-20.

        [4] 林國順,黃梯云.模擬隨機(jī)數(shù)統(tǒng)計(jì)性質(zhì)比較[J].數(shù)理統(tǒng)計(jì)與管理,2000(12):30-34.

        [5] 吳飛.產(chǎn)生隨機(jī)數(shù)的幾種方法以及應(yīng)用[J].數(shù)值計(jì)算與計(jì)算機(jī)應(yīng)用,2006(1):48-51.

        A large number of different random numbers application based WEB

        LI You-ping
        (Department of Computer and Information Engineering,Wuhan Polytechnic University,Wuhan 430023,China)

        During applications based WEB,a large number of different random numbers are often needed,and the traditional use of the array to obtain the random numbers by different methods are inefficient. It is even more obvious when the number of requests is large,particularly in the WEB applications,where the client continues to request more easily server load and can not be completed.This article proposes an effective solution of such problems through a database of random numbers and random sub-combination of methods.

        WEB;a large number of;different;random number

        TP 311

        A

        1009-4881(2010)01-0064-03

        10.3969/j.issn.1009-4881.2010.01.018

        2009-09-11.

        李幼平 (1973-),男,副教授,E-mail:jiss118@126.com.

        教育部青年基金資助項(xiàng)目(06JC860005).

        猜你喜歡
        排序數(shù)據(jù)庫方法
        排序不等式
        恐怖排序
        節(jié)日排序
        刻舟求劍
        兒童繪本(2018年5期)2018-04-12 16:45:32
        數(shù)據(jù)庫
        可能是方法不對
        數(shù)據(jù)庫
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        日本熟女视频一区二区三区| 精品人妻av区乱码| 男女性爽大片视频| 亚洲精品无码成人片久久不卡 | 国语对白自拍视频在线播放| 亚洲毛片免费观看视频| 少妇伦子伦精品无吗| 99久久综合精品五月天| 欧美韩日亚洲影视在线视频| 九九精品国产99精品| 色av色婷婷18人妻久久久| 国产一区二区三区最新地址 | 中文字幕无码中文字幕有码| 吃奶呻吟打开双腿做受视频| 蜜臀av 国内精品久久久| 人体内射精一区二区三区| 国产免费人成视频在线播放播| 精品av一区二区在线| 亚洲国产精品久久婷婷| 无码熟妇人妻av在线影片最多 | 男人阁久久| 亚洲最大的av在线观看| 亚洲成人av一二三四区| 性无码专区无码| 台湾佬综合网| 久久精品国产亚洲AV香蕉吃奶 | 国产女人水真多18毛片18精品 | 亚洲VA不卡一区| 亚洲国产综合精品一区最新| 国内精品久久久久影院优| 欧美亚洲精品一区二区| 欧美中文字幕在线看| 亚洲综合国产精品一区二区| 色欲欲www成人网站| 精品综合久久久久久97超人| 国产一区二区三区杨幂| 久久久精品国产av麻豆樱花| 国产av无码专区亚洲av麻豆| 小sao货水好多真紧h无码视频| 欧美日韩国产综合aⅴ| 亚洲午夜久久久精品国产|