vovanium
Новичок
Приколист, однакоМоё решение единственное верное, и самое быстрое
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
Приколист, однакоМоё решение единственное верное, и самое быстрое
<?php
function getnumbers($m,$n)
{
if ($m < $n-1) {return FALSE;}
$ns = array();
for ($i = 0; $i < $n;)
{
$r = rand(0,$m);
if (!in_array($r,$ns)) {$ns[] = $r; ++$i;}
}
return $ns;
}
$start = microtime(1);
for ($i=0;$i<100000;$i++)
{
getnumbers(9,10);
}
print microtime(1)-$start;
print '<BR>';
$max= 9;
$iteration=10;
$increace= $max/$iteration;
$start = microtime(1);
for ($i=0;$i<100000;$i++)
{
$step=1;
$array[0]=rand(0,$increace);
while($step<10)
{
$array[$step]=rand($array[$step-1]+1,$array[$step-1]+$increace);
++$step;
}
}
print microtime(1)-$start;
?>
Вот этого. Или мой код не верный? Или он уступает твоему по скорости а не выигрывает в 2-5 раз?Моё решение единственное верное, и самое быстрое.
<?php
function getnumbers($m,$n)
{
if ($m < $n-1) {return FALSE;}
$ns = array();
for ($i = 0; $i < $n;)
{
$r = rand(0,$m);
if (!in_array($r,$ns)) {$ns[] = $r; ++$i;}
}
return $ns;
}
$start = microtime(1);
for ($i=0;$i<100000;$i++)
{
getnumbers(9,10);
}
print microtime(1)-$start;
print '<BR>';
$max= 9;
$iteration=10;
$increace= $max/$iteration;
$start = microtime(1);
for ($i=0;$i<100000;$i++)
{
$step=1;
$array[0]=rand(0,$increace);
while($step<10)
{
$array[$step]=rand($array[$step-1]+1,$array[$step-1]+$increace);
++$step;
}
shuffle($array);
}
print microtime(1)-$start;
?>
Смысл данного кода что он генерирует псевдослучайные числа и без повторений.
$r = rand(0,$m);
З.Ы. когда кажется креститься надо.Помогите пожалуйста куском скрипта, который выдает 10 случайнх, не повторяющихся чисел на промежутке от 0 до определенного значнеия.