Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как создать одномерный массив из N элементов и заполнить его сулчайными числами?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
beginner_0001
Отправлено: 28 Сентября, 2012 - 07:59:29
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Изучаю PHP. В теме топика собственно вопрос.
Спасибо большое за ответ, заранее!
 
 Top
avtor.fox
Отправлено: 28 Сентября, 2012 - 08:09:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




PHP:
скопировать код в буфер обмена
  1. function array_fill_rand($n){
  2.         $arr = array();
  3.         for($i=0;$i<$n;$i++){
  4.                 $arr[] = rand(0, $n*2);
  5.         }
  6.         return $arr;
  7. }
  8. $arrFillRand = array_fill_rand(10);
  9. print_r($arrFillRand);

Как вариант. Может быть и есть стандартная функция, но я её не знаю. И поиск ничего не дал.
 
 Top
beginner_0001
Отправлено: 28 Сентября, 2012 - 08:16:54
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Спасибо!

(Отредактировано автором: 28 Сентября, 2012 - 09:36:13)

 
 Top
EuGen Администратор
Отправлено: 28 Сентября, 2012 - 09:44:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Используйте sort. Пример:
PHP:
скопировать код в буфер обмена
  1. function createRandom($iCount, $iMin=0, $iMax=RAND_MAX, $bSort=false)
  2. {
  3.    $rgData=array_map(function($x) use ($iMin, $iMax)
  4.    {
  5.       return mt_rand($iMin, $iMax);
  6.    },array_fill(0, $iCount, 0));
  7.    if($bSort)
  8.    {
  9.       sort($rgData);
  10.    }
  11.    return $rgData;
  12. }
  13. //$rgData=createRandom(10,100,200, true);


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
beginner_0001
Отправлено: 28 Сентября, 2012 - 10:17:37
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Продолжение. Товарищи подскажите плиз как лучше сделать?

Создал массив из 30 элементов с рандомными числами.
Отсортировал массив по возрастанию.
Как в отсортированный массив вставить случайное число, чтобы он оставался отсортированным?

<?php

//Создание массива из 30 эл с рандомными числами

function array_fill_rand($limit, $min=false, $max=false)
{
$limit = (int)$limit;
$array = array();

if ($min !== false && $max !== false)
{
$min = (int)$min;
$max = (int)$max;
for ($i=0; $i<$limit; $i++)
{
$array[$i] = rand($min, $max);
}
}

return $array;
}

$rand_array = array_fill_rand(30, 0, 300);

//Сортировка по возрастанию

sort($rand_array);
for($i=0; $i < count($rand_array); $i++)
{

echo '<pre>';
print_r($rand_array);
//echo '<pre>';

exit;

}

Спасибо! Если поможете буду ОЧЕНЬ благодарен!
В PHP не очень. Только учусь.

(Отредактировано автором: 28 Сентября, 2012 - 10:19:08)

 
 Top
AlexAnder
Отправлено: 28 Сентября, 2012 - 12:22:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Цитата:
Как в отсортированный массив вставить случайное число, чтобы он оставался отсортированным?

добавь, и снова отсортируй А?!


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
armancho7777777 Супермодератор
Отправлено: 28 Сентября, 2012 - 12:46:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1. // Просто создаём массив и диапазона чисел
  2. range(0, 50);
  3.  
  4. // + Перемешиваем
  5. shuffle(range(0, 50));
  6.  
  7. // + сбрасываем ключи

(Отредактировано автором: 28 Сентября, 2012 - 12:54:33)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Сентября, 2012 - 13:12:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




armancho7777777, shuffle изменяет аргумент по ссылке.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 28 Сентября, 2012 - 13:13:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




armancho7777777 пишет:
shuffle(range(0, 50));

Угадайте, что будет на выходе.
AlexAnder пишет:
добавь, и снова отсортируй

Лучше все же добавлять случайное число, сдвигая диапазон минимального значения, устанавливая его в текущее максимальное значение массива. С учетом отсортированности - это будет последний элемент, так что алгоритм еще более упрощается.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 28 Сентября, 2012 - 13:14:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




EuGen пишет:
Угадайте, что будет на выходе.

Блин, точнее так)
PHP:
скопировать код в буфер обмена
  1. // Cоздаём массив из диапазона чисел
  2. $r = range(0, 50);
  3.  
  4. // + Перемешиваем и сбрасываем ключи
  5. shuffle($r);
  6.  
  7. print_r($r);
  8.  

(Отредактировано автором: 28 Сентября, 2012 - 13:22:06)

 
 Top
EuGen Администратор
Отправлено: 28 Сентября, 2012 - 13:22:35
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




armancho7777777 пишет:
// Cоздаём массив из диапазона чисел
$r = range(0, 50);

// + Перемешиваем
shuffle($r);

// + сбрасываем ключи
$r = array_values($r);

Это все же создаст перемешанный массив, состоящий из значений от 0 до 50, а не массив из 50 случайных значений. Поэтому не подходит. Более того, требуется еще и отсортированность этих значений. Поэтому, сортируя, Вы получите исходный range(0,50).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 28 Сентября, 2012 - 13:24:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




EuGen пишет:
а не массив из 50 случайных значений

Я знаю.
Просто, как вариант )
 
 Top
vaajnur
Отправлено: 06 Октября, 2013 - 19:17:41
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




можно без функций, покороче

<?
echo "<pre>";
$n = 15;// любое число
for($u=0;$u<$n;$u++){
$t[$u] = rand(500,1000);
};
print_r($t);
echo "</pre>";
?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB