Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Синхронизация чисел, вырабатываемых функцией rand

Сообщения:  [1-8] 

 
 автор: confirm   (04.11.2012 в 10:20)   письмо автору
 
   для: cheops   (04.11.2012 в 10:14)
 

Вот этого я не знаю, ну как только они пришлют отчет мне, я поделюсь )
Это их новый процессор, и только начались поставки серверов на их базе, включая и в Россию.

  Ответить  
 
 автор: cheops   (04.11.2012 в 10:14)   письмо автору
 
   для: confirm   (31.10.2012 в 14:31)
 

Хм... настолько ровное распределение? Собственно "действительно случайные числа" можно генерировать и при помощи алгоритмов (те, кто считает по методу Монте-Карло собаку на них съели). В в быстром железе один из таких алгоритмов это, конечно очень интересно... глянуть бы на распределение и отклонения в нем.

  Ответить  
 
 автор: confirm   (31.10.2012 в 14:31)   письмо автору
 
   для: Sfinks   (29.10.2012 в 09:49)
 

Случайные числа - это всегда "псевдослучайные числа" =)
Т.е. они выглядят как случайные, но на самом деле они вычисляются по определенной формуле.


IBM начала поставки серверов на базе новых процессоров IBM Power7+
В Power7+ реализована функция, названная IBM генератором «действительно случайных чисел». Он предназначен для защиты от взлома, совершаемого методом прогнозирования следующего «случайного» числа в последовательности.

  Ответить  
 
 автор: Sfinks   (29.10.2012 в 09:49)   письмо автору
 
   для: Владимир55   (28.10.2012 в 15:55)
 

Случайные числа - это всегда "псевдослучайные числа" =)
Т.е. они выглядят как случайные, но на самом деле они вычисляются по определенной формуле.
Если я не ошибаюсь - формула опирается на значения time и microtime.
Но я думал, что уникальных "случайных" чисел несколько больше чем 8192 =/
Видать это особенность формулы.
Интересно, что скажет cheops. Он в теории силен =)

  Ответить  
 
 автор: confirm   (28.10.2012 в 16:28)   письмо автору
 
   для: Владимир55   (28.10.2012 в 15:55)
 

Ну для первого вашего случайного числа надо учитывать, что максимальное значение на win платформе равно 32767, а для mt_rand() 2147483647.
Вы их можете получить на своей платформе с помощью функций getrandmax() и mt_getrandmax(), соответственно.
Используйте mt_rand(), посмотрите в этом случае. Правда я не представляю этот процесс, если он визуально происходит. )

  Ответить  
 
 автор: Владимир55   (28.10.2012 в 15:55)   письмо автору
 
   для: confirm   (28.10.2012 в 04:51)
 

chr(13).chr(10) - а просто "\n" вместо этого, что не катит? )
Можно и так.

rand() генерирует случайное число, а не случайное не повторяющееся.

Это верно, но тут дело в чем-то другом.

Во-первых, вероятность совпадений четырех случайных величин ничтожно мала, а тут результат устойчивый, повторяющийся при запуске скрипта (в смысле, числа разные, но всегда имеет место совпадение).

А во-вторых, обнаружена некая закономерность: уникальных строк всегда 8192, а остальные повторы. Даже если цикл сделать длиною не 15 тысяч, а сто тысяч - уникальных будет 8192.

  Ответить  
 
 автор: confirm   (28.10.2012 в 04:51)   письмо автору
 
   для: Владимир55   (28.10.2012 в 00:29)
 

rand() генерирует случайное число, а не случайное не повторяющееся.
chr(13).chr(10) - а просто "\n" вместо этого, что не катит? )

  Ответить  
 
 автор: Владимир55   (28.10.2012 в 00:29)   письмо автору
 
 

Наблюдается какой-то странный эффект - случайные числа как-бы синхронизируются.

Скрипт такой:
<?php

     
for ($i=0$i15000$i++)
    {
        
$n    rand(031000);
        
$new  rand(2000510000000000) . ";" $m_prise[$n] . ";" 10 * (rand(502500)) . ";" rand(112) . chr(13).chr(10);

 echo 
"<br />$i > " $new ;

    } 
 
Здесь в каждой строке используется четыре случайных числа. И вот через несколько строк с действительно случайными комбинациями я вижу полный повтор! То есть строку, где ВСЕ ЧЕТЫРЕ случайных числа повторяют те, что уже были!

Например, идет сочетание
957420523 27403 9580 10

Потом 18 уникальных комбинаций и затем снова сочетание
957420523 27403 9580 10

Как вообще такое возможно?

  Ответить  

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования