Перейти к содержимому


Партнерская программа Kredov

Генерация случайный неповторяющихся чисел

#1 BaCo

BaCo
  • Пользователь
  • 103 сообщений
  • Репутация: 0
0

Отправлено 24 Апрель 2010 - 13:02

Можете ли предложить функцию, которая будет генерировать случайное число и чтобы при следующем вызове функции это число не повторялось?

 

 

  • 0

#2 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 24 Апрель 2010 - 21:09

юзай функцию rand(0, 10) генерирует числа от 0 до 10.
  • 0


#3 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 24 Апрель 2010 - 21:50

Помещай число куда нибудь. Если за одно выполнение скрипта, то в переменную. Если разные, то в файл или в БД. Потом проверяешь через while()
  • 0

#4 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 24 Апрель 2010 - 22:29

2*gaaarfild* я думаю что это будет хорошо напрягать систему, всё-таки лишний запрос в БД, а ещё + если чисел будет 10 000 ? проверка займёт много времени...
  • 0


#5 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 24 Апрель 2010 - 22:43

файл тогда. я других вариантов не придумал.
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 24 Апрель 2010 - 23:40

BaCo, скажите для чего вам это. А так, как уже сказали, либо глобальный массив(если числа не должны повторяться за раз обработки), либо сессии,бд или файлы(если числа не должны повторяться при сеансе)
  • 0

#7 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 25 Апрель 2010 - 08:16

оттолкнуться можно остюда, http://sqlinfo.ru/fo...id=11053#p11053
  • 0

#8 BaCo

BaCo
    Topic Starter
  • Пользователь
  • 103 сообщений
  • Репутация: 0

Отправлено 25 Апрель 2010 - 09:32

Мне это нужно, чтобы из БД выбирались случайные блоки с рекламой и они не повторялись...
  • 0

#9 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 25 Апрель 2010 - 10:27

2*BaCo* тогда всё просто!
В одной переменной минимальное количество блоков, а в другой - максимальное. И рандомишь с минимального до максимального. Типа так rand($min, $max);
  • 0


#10 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 25 Апрель 2010 - 11:51

Нет. Тут, как раз таки они могут повторяться.
Лучше тогда добавить доп поле в БД. в таблице рекламы. и показанные уже обозначать однеркой. Показывать только непоказанные.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru