第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

生成范圍內的唯一隨機數(shù) - PHP

生成范圍內的唯一隨機數(shù) - PHP

PHP
狐的傳說 2019-08-13 10:53:25
生成范圍內的唯一隨機數(shù) - PHP我需要在一個范圍內生成隨機的UNIQUE數(shù)字嗎?怎么做 ?我可以生成隨機數(shù)generator:$arr=array();$x=rand($min,$max);$len=count($arr);$flag = 0;for($i=0;$i<$len;$i++){  if ($flag == 1)    goto generator;  if ($x == $arr[$i])    $flag = 1;}$arr[$index] = $x;$index++; goto generator;我知道這段代碼很糟糕,所以我需要一個更好的我的版本優(yōu)化代碼!救命 !例如:如果我需要在1到15之間生成3個數(shù)字,它們應該是5,9,1但不是3,1,2 [在1-3中(我想要生成的數(shù)字)]
查看完整描述

3 回答

?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

$len = 10;   // total number of numbers

$min = 100;  // minimum

$max = 999;  // maximum

$range = []; // initialize array

foreach (range(0, $len - 1) as $i) {

    while(in_array($num = mt_rand($min, $max), $range));

    $range[] = $num;

}

print_r($range);

我很想知道接受的答案是如何與我的一致的。值得注意的是,兩者的混合可能是有利的; 實際上是一個根據(jù)特定值有條件地使用一個或另一個的函數(shù):


# The accepted answer

function randRange1($min, $max, $count)

{

    $numbers = range($min, $max);

    shuffle($numbers);

    return array_slice($numbers, 0, $count);

}


# My answer

function randRange2($min, $max, $count)

{

    $range = array();

    while ($i++ < $count) {

        while(in_array($num = mt_rand($min, $max), $range));

        $range[] = $num;

    }

    return $range;

}


echo 'randRange1: small range, high count' . PHP_EOL;

$time = microtime(true);

randRange1(0, 9999, 5000);

echo (microtime(true) - $time) . PHP_EOL . PHP_EOL;


echo 'randRange2: small range, high count' . PHP_EOL;

$time = microtime(true);

randRange2(0, 9999, 5000);

echo (microtime(true) - $time) . PHP_EOL . PHP_EOL;


echo 'randRange1: high range, small count' . PHP_EOL;

$time = microtime(true);

randRange1(0, 999999, 6);

echo (microtime(true) - $time) . PHP_EOL . PHP_EOL;


echo 'randRange2: high range, small count' . PHP_EOL;

$time = microtime(true);

randRange2(0, 999999, 6);

echo (microtime(true) - $time) . PHP_EOL . PHP_EOL;

結果:


randRange1: small range, high count

0.019910097122192


randRange2: small range, high count

1.5043621063232


randRange1: high range, small count

2.4722430706024


randRange2: high range, small count

0.0001051425933837

如果您使用較小的范圍和較高的返回值計數(shù),則接受的答案肯定是最佳的; 然而正如我所預料的那樣,更大的范圍和更小的計數(shù)將在接受的答案中花費更長的時間,因為它必須存儲范圍內的每個可能的值。你甚至冒著吹PHP內存上限的風險?;旌衔镌u估范圍和計數(shù)之間的比率,并有條件地選擇發(fā)電機將是兩個世界中最好的。


查看完整回答
反對 回復 2019-08-13
  • 3 回答
  • 0 關注
  • 755 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號