php取不重復(fù)隨機(jī)數(shù)的方法:首先通過(guò)“mt_random($min,$max)”方法隨機(jī)取區(qū)間內(nèi)的一個(gè)值;然后通過(guò)兩次“key-value”交換實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù)即可。
成都創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金州企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站建設(shè),金州網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
推薦:《PHP視頻教程》
PHP中生產(chǎn)不重復(fù)隨機(jī)數(shù)的方法
PHP內(nèi)置函數(shù)不重復(fù)隨機(jī)數(shù)
需求:要生成一個(gè)數(shù)組,這個(gè)數(shù)組里面有10個(gè)元素,都是整形,并且是1-60之間不重復(fù)的隨機(jī)數(shù)。
代碼:
代碼示例:
<?php function get_randoms($min,$max,$num){ $count = 0; $res = array(); while($count<$num){$res[] = mt_random($min,$max);$res = array_flip(array_flip($res)); $count = count($res); } return $res; } $result = get_randoms(1,60,10); ?>
在這里 他用$count 結(jié)果數(shù)組的個(gè)數(shù),他在while 循環(huán)中 使得結(jié)果數(shù)組的個(gè)數(shù)小于 目標(biāo)個(gè)數(shù)。通過(guò)這樣,獲取到$count 是 目標(biāo)個(gè)數(shù) 的一個(gè)數(shù)組。
期間,每一個(gè)循環(huán)中,通過(guò)mt_random($min,$max),隨機(jī)出區(qū)間內(nèi)的一個(gè)值,存放到數(shù)組$res中,然后通過(guò)兩次key-value 交換,也就是通過(guò)數(shù)組key的唯一性,使得做到不重復(fù)。
我看了這個(gè)邏輯的代碼之后,我不禁陷入了深思,假如說(shuō)當(dāng)你不知道array_filp 函數(shù)的時(shí)候你怎么做?
說(shuō)白了就是用key的唯一性,使得隨機(jī)數(shù)不會(huì)存在重復(fù)。那么我們能不能將這個(gè)問題簡(jiǎn)單化處理呢?
代碼示例:
<?php function get_randoms($min,$max,$num){ $count = 0; $res = array(); while($count<$num){ $key = mt_random($min,$max); $res[$key] = $key; $count = count($res); } return $res; } $result = get_randoms(1,60,10); ?>
這樣完全是單獨(dú)的通過(guò)數(shù)組key的唯一性 解決了這個(gè)問題。根本就不會(huì)用到array_flip。
總結(jié):
1,因?yàn)閜hp提供了大量的內(nèi)置函數(shù),他們的執(zhí)行效率都很高。在遇到問題的時(shí)候,盡可能去用它去解決問題。這樣方便而且快速。
2,php 提供了大量的內(nèi)置函數(shù),執(zhí)行效率也很高,但是,雖然效率高,還是需要時(shí)間去執(zhí)行的。
在遇到問題的時(shí)候,不要盲目的去做,可以先看清處理方法的本質(zhì),以便于巧妙的實(shí)現(xiàn)他。
網(wǎng)頁(yè)名稱:php如何取不重復(fù)的隨機(jī)數(shù)
URL網(wǎng)址:http://www.rwnh.cn/article36/cjogpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信小程序、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)