Comments 82
А в чем заключается преимущество этого сервиса? Более рандомный рандом?
-2
Да, не псевдо-, а настоящий рандом
+16
В неком смысле — да. Это уже не псевдослучайный генератор, а полностью случайный, так как участвуют непредсказуемые силы природы в его действии. Зачем подобные вещи смертным? Честно — не знаю, надеюсь придут понимающие люди и просветят =)
0
Да. Посмотрите этот линк random.org/analysis
+1
Наглядно для тех, кому лень по ссылке заходить:
PHP rand() on Microsoft Windows
RANDOM.ORG
Тут разница очевидна.
PHP rand() on Microsoft Windows
RANDOM.ORG
Тут разница очевидна.
+19
Чтобы разница уж точно была очевидна, нагляднее строить гистограмму и рисовать для сравнения соответствующую гауссиану или распределение Пуассона (смотря что за шум у нас там).
-1
Подозреваю, если первый рандом получить несколько раз (можно даже рандомное количество раз), а затем применить к этому множеству некую функцию (например, простейший вариант: перемножить), то можно получить нечто близкое ко второму.
0
Подозреваю, что вы ошибаетесь.
Ну, или приведите конкретный пример.
Ну, или приведите конкретный пример.
+6
Возможно, в данном случае ошибаюсь (не знаю, как сгенерировать такую картинку).
Но я к чему веду… Имея «плохой» рандом можно получить «хороший». В пример можно привести возведение в «плохую» степень числа по модулю простого числа. Взгляните на этот пример. Здесь образуется псевдослучайная последовательность, не поддающаяся ни каким закономерностям. При этом, данная особенность используется в криптографических алгоритмах благодаря сложности вычисления обратной функции. Да, псевдослучайная, ну и что?
Но я к чему веду… Имея «плохой» рандом можно получить «хороший». В пример можно привести возведение в «плохую» степень числа по модулю простого числа. Взгляните на этот пример. Здесь образуется псевдослучайная последовательность, не поддающаяся ни каким закономерностям. При этом, данная особенность используется в криптографических алгоритмах благодаря сложности вычисления обратной функции. Да, псевдослучайная, ну и что?
0
Возводить в степень нужно, конечно же, не обычное число, а, так называемый, первообразный корень модуля. В примере выше, 3 — первообразный корень 17.
В общем, имея некие навыки в «матане», можно генерировать такие псевдослучайные числа, которые не поддаются никаким закономерностям.
В общем, имея некие навыки в «матане», можно генерировать такие псевдослучайные числа, которые не поддаются никаким закономерностям.
+2
Фиг поймешь этот хабр. Если я не прав, приведите аргументы, подтверждающие это. Минусовать по причине «я не знаком с темой» не очень достойно хаброюзера.
+4
закономерности все равно будут, но куда более сложные и не очевидные. +Это будет во много раз больше нагружать железо.
p.s. не минусовал вас
p.s. не минусовал вас
0
Пускай нагружает. Это намного быстрее, чем ждать ответа от стороннего веб сервиса.
+1
Ну в серьёзном проекте никто не будет использовать сторонний веб-сервис.
Например, разработчики покерного софта (PokerStars там всякие, как самый известный привожу в пример), исключают псевдослучайность на своих серверах, собирая и применяя для генерации случайных чисел различные действия пользователя клиентской части софта, например, движения мышки на компе и т.п.
Например, разработчики покерного софта (PokerStars там всякие, как самый известный привожу в пример), исключают псевдослучайность на своих серверах, собирая и применяя для генерации случайных чисел различные действия пользователя клиентской части софта, например, движения мышки на компе и т.п.
0
Кнут, глава 3, «Случайные числа».
Вкратце: без источника энтропии числа рано или поздно начнут повторяться.
Вкратце: без источника энтропии числа рано или поздно начнут повторяться.
+1
Да, но для псевдо случайных чисел период повторений настолько огромен, что это «псевдо» не должны быть проблемой.
+1
Лично я генерил такую картинку в firefox (canvas + Math.random), у меня получилось более похоже на вторую
0
<?php
// Requires the GD Library
header("Content-type: image/png");
$im = imagecreatetruecolor(2120, 2120)
or die("Cannot Initialize new GD image stream");
$white = imagecolorallocate($im, 255, 255, 255);
for ($y=0; $y<2120; $y++) {
for ($x=0; $x<2120; $x++) {
if (rand(0,1) === 1) {
imagesetpixel($im, $x, $y, $white);
}
}
}
imagepng($im);
imagedestroy($im);
Microsoft Windows [Version 6.1.7601]
PHP 5.3.8-ZS5.5.0 (cli) (built: Aug 24 2011 15:25:45)
+5
Хм… Действительно, проверил для явы
public static void main(String[] args) throws IOException {
int height = 512;
int weight = 512;
BufferedImage image = new BufferedImage(weight, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0 ; x < weight; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, new Random().nextBoolean() ? Color.white.getRGB() : Color.black.getRGB());
}
}
ImageIO.write(image, "jpg", new File("c:/randomCheck.jpg"));
}
-1
В вот если использовать один и тот же объект картинка получается гораздо лучше
public static void main(String[] args) throws IOException {
Random r = new Random();
int height = 512;
int weight = 512;
BufferedImage image = new BufferedImage(weight, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < weight; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, r.nextBoolean()? Color.white.getRGB(): Color.black.getRGB());
}
}
ImageIO.write(image, «jpg», new File(«c:/randomCheck.jpg»));
}
Так что вполне себе нормальная случайность =).
public static void main(String[] args) throws IOException {
Random r = new Random();
int height = 512;
int weight = 512;
BufferedImage image = new BufferedImage(weight, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < weight; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, r.nextBoolean()? Color.white.getRGB(): Color.black.getRGB());
}
}
ImageIO.write(image, «jpg», new File(«c:/randomCheck.jpg»));
}
Так что вполне себе нормальная случайность =).
+2
Ну и не так уж и очевидна (тоже PHP):
Я согласен, что со встроенным генератором лотерейное ПО лучше не писать, но и совсем уж атавизмами типа функции rand() козырять тоже не стоит.
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$size=512;
$image = imagecreatetruecolor($size,$size);
$black = imagecolorallocate ($image, 0,0,0 );
$white = imagecolorallocate ($image, 255,255,255 );
for ($x = 0; $x<$size; $x++) {
for ($y = 0; $y<$size; $y++) {
imagesetpixel($image,$x,$y,mt_rand(0,1)?$black:$white);
}
}
header ('Content-Type: image/png');
imagepng($image);
Я согласен, что со встроенным генератором лотерейное ПО лучше не писать, но и совсем уж атавизмами типа функции rand() козырять тоже не стоит.
+1
Более рандомный относительно чего? Мейнстрим рандомы нынче псевдо-рандомны, т.е. по сути не являются рандомными и в теории их можно предсказывать.
+1
Задача генерации случайных чисел в достаточном количестве и за приемлемое время является большой проблемой. Надо заметить, что данный ресурс эту проблему до конца не решает.
+2
Однажды я принимал участие в проекте, который представлял собой лотерею, для сертификации проекта в UK необходим был аудит кода + хардварный генератор случайных чисел, чтобы лотерея выдавала действительно рандомные значение, и ее результаты не могли быть подобраны или вычислены.
Например для такого проекта был бы очень полезен такой сервис, тем более что частые запросы не требуются, гораздо важнее надежность рандомного генератора.
Например для такого проекта был бы очень полезен такой сервис, тем более что частые запросы не требуются, гораздо важнее надежность рандомного генератора.
+5
… Это должен был быть комментарий в корень обсуждения
0
Дык а эту самую сертификацию он бы прошел?
0
Вообще говоря, /dev/random не такой уж и псевдослучайный в старом добром Linux
+2
Зато он невероятно медленный.
Я как-то писал наивный конфигуратор, которому для идентификации нужно было сколько-то случайных чисел. На ~100-150 случайном символе начинались проблемы со скоростью.
Я как-то писал наивный конфигуратор, которому для идентификации нужно было сколько-то случайных чисел. На ~100-150 случайном символе начинались проблемы со скоростью.
+1
Пользовался этим сервисом для лотереи по предметам из онлайн-игрушки. Псевдо-рандом заказчика не устроил, поэтому пришлось искать варианты использования true random. Из минусов могу отметить разве что ограничение для бесплатного пользования в 200 тысяч байт вроде. Сейчас уже отказались от данного сервиса и используем свою купленную железку www.idquantique.com/true-random-number-generator/quantis-usb-pcie-pci.html
+3
Как развлечение — сойдёт.
Однако в серьёзных задачах глупо на него положиться.
Если в случае псевдо-рандома «у себя» надо хотя бы сделать некоторые телодвижения, чтобы предсказать вывод, тут же злоумышленнику достаточно подменить по пути ответ сервера и радоваться жизни.
Однако в серьёзных задачах глупо на него положиться.
Если в случае псевдо-рандома «у себя» надо хотя бы сделать некоторые телодвижения, чтобы предсказать вывод, тут же злоумышленнику достаточно подменить по пути ответ сервера и радоваться жизни.
+2
1 Зачем подменить, если можно просниффать
2 если введут https, то возможно от этого защититься
3 без интернета это не работает
4 Мне кажется, что лучше использовать генератор из TPM, который микросхема в компьютере, чем обращаться к этому сервису. Хотя в TPM могут быть закладки. Ну тогда с физического источника через какую-нибудь плату ардуино по юсб.
И дешевле, и быстрее
2 если введут https, то возможно от этого защититься
3 без интернета это не работает
4 Мне кажется, что лучше использовать генератор из TPM, который микросхема в компьютере, чем обращаться к этому сервису. Хотя в TPM могут быть закладки. Ну тогда с физического источника через какую-нибудь плату ардуино по юсб.
И дешевле, и быстрее
+1
А что, если в один и тот же момент к сервису обратятся сразу два клиента?
Первый — тот, кто собирается на основе данных сервиса хочет сгенерировать ключевую пару, а второй, естественно, злоумышленник.
В таком случае второй сможет неким образом вычислить значение (с учетом завязки сервиса на IP, например), отданное первому клиенту, и успешно сгенерировать у себя такие же ключи.
Логично, что для избежания этого нужно в конкретный момент времени выдавать значение ГСЧ только одному клиенту, но это моментально снижает производительность сервиса.
Первый — тот, кто собирается на основе данных сервиса хочет сгенерировать ключевую пару, а второй, естественно, злоумышленник.
В таком случае второй сможет неким образом вычислить значение (с учетом завязки сервиса на IP, например), отданное первому клиенту, и успешно сгенерировать у себя такие же ключи.
Логично, что для избежания этого нужно в конкретный момент времени выдавать значение ГСЧ только одному клиенту, но это моментально снижает производительность сервиса.
+1
Они умножают шум ветра на php rand() :D
-4
>> в конкретный момент времени выдавать значение ГСЧ только одному клиенту, но это моментально снижает производительность сервиса.
Именно поэтому на сервисе есть ограничение на генерацию случайных чисел в день (на данный момент это 1 000 000 бит/день). Лимит можно увеличить за доплату.
Именно поэтому на сервисе есть ограничение на генерацию случайных чисел в день (на данный момент это 1 000 000 бит/день). Лимит можно увеличить за доплату.
0
Клевый ресурс, заполняю лотерейные билетики с помощью него и пока вроде в плюсе;)
+3
По-моему, разумно добавить подкласс класса java.util.Random. Вам потребуется только переписать защищённый метод next. Ну, разумеется, seed будете игнорировать, да readObject/writeObject станут бесполезны. Зато ваш класс можно будет подсовывать тем, кто уже пользуется java.util.Random. Ну и появятся автоматом приятные фишки типа nextGaussian().
-1
Не катит для высоконагруженных проектов. Разве что у Вас есть embedded вариант без обращений к внешним серверам…
0
Можно сочетать с псевдослучайным алгоритмом: время от времени подменять его seed на число, полученное с сервера (это можно делать асинхронно, тормозить не будет). Если заменить цепочку истинно случайных чисел на набор коротких случайных цепочек псевдослучайных чисел то, возможно, это устроит пользователя. Хотя, конечно, зависит от приложения.
0
Зависит от задачи. Например, там есть возможность за раз выкачать pregenerated числа и при запросе рендома, использовать эти результаты уже без обращения к серверу.
0
Я знаю, что они сделают первого апреля.
+2
А я по старинке пользуюсь книгой: goo.gl/XrkfY
Правда несколько неудобно из-за отсутствия сортировки — трудно найти нужное случайное число.
Правда несколько неудобно из-за отсутствия сортировки — трудно найти нужное случайное число.
+2
Очень круто. И в ней прямо числа одни случайные?
0
Да, 600 страниц отборных случайных чисел =)
Круче только многотомник с числом Пи, которого я не нашел в продаже, к сожалению.
Круче только многотомник с числом Пи, которого я не нашел в продаже, к сожалению.
0
Это прекрасно. Только мне пришло в голову, что, как только книжка написана, эти числа перестают быть случайными :). Даже если они такие крутые, что каждая книжка генерится отдельно. Тут неплохо было бы, конечно, определить тогда, что такое случайный.
Просто первое, что мне пришло в голову насчет случайных чисел — это что невозможно построить некоторое правило, по которому начиная с некоторого N мы сможем предсказывать появление новых. Типа получается, что шумы мира не детерминированы, ну там, правило Гейзенберга, квантовые штуки, и поэтому тут то случайность настоящая. Если принять мое определение, книжка все портит.
Хотя все равно это очень круто :)
Просто первое, что мне пришло в голову насчет случайных чисел — это что невозможно построить некоторое правило, по которому начиная с некоторого N мы сможем предсказывать появление новых. Типа получается, что шумы мира не детерминированы, ну там, правило Гейзенберга, квантовые штуки, и поэтому тут то случайность настоящая. Если принять мое определение, книжка все портит.
Хотя все равно это очень круто :)
0
Пардон, а как ей пользоваться?
0
Консенсуса в этом вопросе пока нет. Кто-то просто открывает и берет любое число по вкусу, кто-то по порядку, более серьезные специалисты ищут конкретное необходимое число, хотя это и занимает некоторое времени ввиду неотсортированности чисел.
0
Но ведь 80 баксов. За что?
0
Абсолютно согласен — продешевили. Вот к примеру гораздо менее объемная работа стоит $495: goo.gl/UF0O5 при всем актуальности разбираемого вопроса.
+1
Да лучше заставить мышой поводить по экрану, ибо есть такие места (большинство), которые без инета ваще наглухо.
+1
Сколько всего только не придумают люди, чтобы шафл в их MP3-плеере был хорошим…
0
Это, конечно, классно, что теперь есть еще одна возможность генерации абсолютно случайных чисел! Но вот только интересно, где может понадобиться абсолютная случайность в процессе разработке софта? Не кажется ли, что и псевдослучайные генераторы вполне справляются со своими задачами по генерации чисел? Я имею ввиду, что для обычного человека( пусть даже и программиста ) нет разницы между псевдослучайностью и абсолютной случайностью.
P.S Кроме того, никто ведь точно не знает, может атмосферные шумы также, как и все в этом мире, цикличны… и предсказать число все же представляется возможным.
P.S Кроме того, никто ведь точно не знает, может атмосферные шумы также, как и все в этом мире, цикличны… и предсказать число все же представляется возможным.
0
Sign up to leave a comment.
Генерация случайных чисел с помощью Random.org