[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод рандомного массива который больше 0
zerikrand
Привет, подскажите пожалуйста как вывести рандомный массив который больше 0, хочу упростить код - именно этот кусок кода требует иногда по 1-2сек на выполнение.

//Нужно вывести рандомное число из массива которое больше 0 - вывод 200 раз, пример если в массиве есть 300 идентификаторов и только одно из них больше 0, то вот этому куску нужно будет выполняться +- 60000 раз...

$arr=array(
"1" => "0",
"2" => "0",
"3" => "0",//и так далее по 0 для каждого значения до 299, только 300 будет равняться 1, число может быть и 2 и 3 и так далее
"300" => "1");

$while2=300;//количество значений в массиве

do{
$rand3=mt_rand(1,$while2);
}while(empty($arr[$rand3]));

echo $arr[$rand3];


Как-же упростить мне задачу, подскажите пожалуйста
Valick
zerikrand, чего упрощать-то?
вам надо чтобы из 200 раз обязательно выпала единичка?


_____________
Стимулятор ~yoomoney - 41001303250491
kaww
Случайный элемент массива? Вот:
$arr = array(
"1" => "0",
"2" => "0",
"3" => "0",
"300" => "1");

$tmpArr = array_values(array_filter($arr, function ($v) {
return !empty($v);
}));
echo $tmpArr[rand(0, count($tmpArr) - 1)] ;

Но если
Цитата
//и так далее по 0 для каждого значения до 299, только 300 будет равняться 1, число может быть и 2 и 3 и так далее
, тогда какой смысл брать случайный элемент если только последний не равен нулю? т.е. достаточно:
echo end($arr);
zerikrand
Цитата (kaww @ 7.04.2014 - 08:49)
Но если
Цитата
//и так далее по 0 для каждого значения до 299, только 300 будет равняться 1, число может быть и 2 и 3 и так далее
, тогда какой смысл брать случайный элемент если только последний не равен нулю? т.е. достаточно:

По началу все элементы массива чему нибудь равняются, но постепенно по выполнению скрипта они приравниваются к 0
Valick
Цитата
т.е. достаточно:
echo end($arr);
kaww
Цитата (Valick @ 7.04.2014 - 04:53)
echo '1';

, в условии
Цитата
число может быть и 2 и 3 и так далее
, по этому end($arr) wink.gif
Valick
Цитата
но постепенно по выполнению скрипта они приравниваются к 0

чтобы не выбрать один и тот же элемент дважды?
Цитата
число может быть и 2 и 3 и так далее

я так понял тут речь про индекс массива, но если нет, то да smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
zerikrand
Цитата (kaww @ 7.04.2014 - 08:49)
Случайный элемент массива? Вот:
$arr = array(
"1" => "0",
"2" => "0",
"3" => "0",
"300" => "1");

$tmpArr = array_values(array_filter($arr, function ($v) {
return !empty($v);
}));
echo $tmpArr[rand(0, count($tmpArr) - 1)] ;

Работает спасибо большое! подскажите пожалуйста, а как получить идентификатор числа.
Пример

$arr = array(
);

$a=0;
while($a++<1000){
if($a==90){ $arr[$a]=45;}elseif($a==865){ $arr[$a]=6441;}elseif($a==560){ $arr[$a]=500;}
}


$tmpArr = array_values(array_filter($arr, function ($v) {
return !empty($v);
}));

echo $tmpArr[rand(0, count($tmpArr) - 1)] ;

//Допустим выпал массив 865 - мы получили его значение 6441, а как на оборот получить не его значение а идентификатор 865
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.