Лучше случайная генерация PHP

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

21
задан reformed 28 January 2017 в 05:32
поделиться

4 ответа

Добавление, умножение или усечение плохого случайного источника дадут Вам плохой случайный результат. См. Введение в Случайность и Случайные числа для объяснения.

Вы правы относительно рэнда PHP () функция. Посмотрите второе число по Статистический анализ для поразительной иллюстрации. (Первое число поразительно, но это было оттянуто Scott Adams, не напечатанным с рэндом ()).

Одно решение состоит в том, чтобы использовать истинный случайный генератор такой в качестве random.org . Другой, если Вы находитесь на Linux/BSD/etc., должен использовать /dev/random. Если случайность в жестком реальном времени, необходимо будет использовать аппаратные средства случайный генератор .

21
ответ дан 29 November 2019 в 20:59
поделиться

random.org имеет API, к которому можно получить доступ через HTTP.

RANDOM.ORG является истинным сервисом случайного числа, который генерирует случайность через атмосферные помехи.

5
ответ дан 29 November 2019 в 20:59
поделиться

Я опасался бы впечатления от случайности: было много экспериментов, где люди выбрали бы менее случайное распределение. Кажется, что ум не очень хорош при создании или оценке случайности.

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

Fourmilab также обеспечивает тестовая программа для проверки случайности. Вы могли использовать его для проверки различного myRand () программы.

Что касается Вашей последней программы, если Вы генерируете 10 000 значений, почему Вы не выбираете окончательное значение среди 10 тысяч? Вы ограничиваете себя подмножеством. Кроме того, это не будет работать, если Ваш $min и $max будут больше, чем 10 000.

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

4
ответ дан 29 November 2019 в 20:59
поделиться

Вариация на @KG, с помощью миллисекунд с ЭПОХИ как семя за рэнд?

2
ответ дан 29 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: