Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mt_rand повторяется 
:(
    Опции темы
talker
Дата 20.11.2011, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 5.5.2008

Репутация: нет
Всего: нет



Для одной задачи генерирую пару чисел, которая должна быть уникальной
Код

$x = mt_rand(0, 9999999);
$y = mt_rand(0, 9999999);

Если посмотреть с точки зрения матстатистики, то вероятность генерации повторно такой же пары практически равна нулю. Но на практике получается иначе. Уже сгенерировано ~200,000 пар и примерно 1 раз на 100 генераций получается повтор (уже существующая пара). Предполагаю, что это связано с особенностями функции mt_rand. Как лечить?
Пробовал
Код

mt_srand((double) microtime() * 10000000);

Не помогло.

+
Возможно, это имеет значение - php 5.2.14

Это сообщение отредактировал(а) talker - 20.11.2011, 15:47
PM MAIL   Вверх
ElGuapo
Дата 20.11.2011, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 1.7.2006

Репутация: нет
Всего: 3



Действительно, есть такая проблема. На php.net в обсуждении предложено несколько способов увеличения случайности: 

Вот на этой странице

А mt_srand в PHP 5 неактуальна - переинициализация выполняется автоматически.
PM MAIL   Вверх
talker
Дата 20.11.2011, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 5.5.2008

Репутация: нет
Всего: нет



Ясно. Попробую такое смещение в разные стороны
Код

round(((double) microtime()) * 100000)

PM MAIL   Вверх
Shogun
Дата 20.11.2011, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Может лучше в сторону uniqid() смотреть?


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.