Колориметрия, печать и препресс: технологии Главная Форум Галерея Контакты Download Статьи
Сражаясь неустанно,
доживём мы, Санчо,
до Золотого века!
 

Форум колористов и полиграфистов

Колориметрия и печать: технологии
 
Текущее время: 3:28, Пт, 14 дек 2018

Часовой пояс: UTC+03:00


Новые
ответы
в темах:



Начать новую тему  Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 16:23, Сб, 23 мар 2013 
Не в сети
Администратор

Зарегистрирован: 16:58, Ср, 18 авг 2004
Сообщения: 821
Откуда: Москва
Не сам придумал эту функцию но она хороша, в ней нет длительного подбора оставшегося случайного числа, когда почти все ячейки последовательности уже заполнены. Работает стало быть идеально быстро, у меня работает в цветовом тесте по циклу, подбирая последовательности из 10 цифр 360 тысяч раз (рисую стохастическими точками 36 картинок с дискретностью 2560 оттенка на канал для цветового теста). Все рисование 360 тысяч разных точек с этой функцией занимает у imagic 3-5 секунд. Поэтому важно, чтобы функция генерации случайных последовательностей была максимально быстрой - тут и без нее у скрипта забот хватает в четырех вложенных циклах с дополнительными счетчиками и четырехмерными массивами цветные точки расставлять (кстати, для справки, 6-мерные массивы у меня скрипт не потянул - пришлось ограничиться дополнительными счетчиками в циклах к четырехмерным массивам).
Вот функция, генерирующая случайную последовательность:
function generateRandomSelection($min, $max, $count)
{
$result=array();
if($min>$max) return $result;
$count=min(max($count,0),$max-$min+1);
while(count($result)<$count) {
$value=rand($min,$max-count($result));
foreach($result as $used) if($used<=$value) $value++; else break;
$result[]=$value;
sort($result);
}
shuffle($result);
return $result;
}
Как видим количество цифр и содержание цифр управляются в параметрах вызова.
Вот вызов функции:
$selection=generateRandomSelection(0,9,10);
Где 0 и 9 первое и последнее число в случайной последовательности и 10 - количество чисел в последовательности. Получаем массив $selection из десяти случайно расположенных чисел от 0 до 9. Как вы догадываетесь это нужно для произвольной сортировки другого массива с количеством элементов равным 10. Мне нужно было произвольно расположить в массиве из 10 ячеек например три тройки и семь семерок. И приведенная выше функция очень помогла. Вначале создал двумя цикалами массив из последоватльно расположенных трех троек и семи семерок а потом перемешал. "Каша" из 360 тысяч таких массивов получилась и правда произвольная, видимых повторений нет, проверял графически.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

cron
© CIELab.XYZ, научный некоммерческий образовательный проект
Создано на основе phpBB® Forum Software © phpBB Limited
Конференция запущена 18 августа 2004 года | Защищено от спама системой stopforumspam
Всего посещений - 4729575 | Всего за день - 31 | Уникальных сегодня - 11, вчера - 356, позавчера - 375