Спонтанные события происходят в коде? [Дубликат]

Решение с FocusScope не работает для меня. Я нашел другое:

import 'package:flutter/services.dart';

SystemChannels.textInput.invokeMethod('TextInput.hide');

Он решил мою проблему.

0
задан tethernova 29 November 2015 в 04:10
поделиться

3 ответа

Это легко найти, посмотрев документы, так как, к счастью, поведение хорошо определено на Java. Из Math он говорит

Когда этот метод сначала вызывается, он создает один новый генератор псевдослучайных чисел, точно так же, как если бы выражение

new java.util.Random()

К сожалению, он явно не говорит, какой метод на Random он вызывает. Однако, поскольку его возвращаемое значение находится в том же диапазоне, что и Random.nextDouble, к которому он также ссылается в разделе «См. Также», должно быть безопасным предположением, что это то, что используется.

Глядя в Random.nextDouble вы можете видеть

return (((long)next(26) << 27) + next(27))
  / (double)(1L << 53);

И next реализована как

, атомистически обновляя семя до

(seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)

и возвращая

(int)(seed >>> (48 - bits))

Таким образом, конечное случайное значение рассчитывается как

seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)
next1 = (int)(seed >>> (48 - 26))
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)
next2 = (int)(seed >>> (48 - 27))
randomValue = (((long)next1 << 27) + next2) / (double)(1L << 53);

Где

семя генератора случайных чисел [инициализируется как] значение, очень вероятно отличающееся от любой другой вызов этого конструктора.

, как указано в Random docs

. Рассматривая это, должно быть довольно ясно что число не является, по сути, «случайным», как это понимают многие люди. Это вполне предсказуемая математическая модель, известная как псевдослучайная , которая достаточно случайна для многих целей. Однако, возможно, стоит посмотреть на SecureRandom (что приводит к непредсказуемым, криптографически сильным случайным значениям), в зависимости от того, насколько непредсказуемым вы хотите получить результаты.

5
ответ дан resueman 22 August 2018 в 01:14
поделиться

Правда о случайных числах состоит в том, что они не являются случайными. они просто вычисляются с текущим временем в mili / nano (или даже меньше) -секундах ... потому что время всегда меняется и никогда не повторяется, значение не может быть одинаковым значением для «той же причины», что то, что делает случайным номер случайного числа ...

Выйти @FranciscoSpaeth answer:

https://stackoverflow.com/a/11317929/3180983

1
ответ дан Community 22 August 2018 в 01:14
поделиться
  • 1
    Это довольно плохой подход (для случайных целей общего назначения) и, надеюсь, не нашел нигде в производстве. Время - это плохое случайное семя, так как его можно манипулировать, и оно может быть изменено между вызовами, потому что процессоры могут работать быстрее, чем часы. 1 ГГц = 0,0000010 мс циклов. Также на нескольких ядрах параллельно – zapl 29 November 2015 в 04:45
  • 2
    Источник времени может исходить из нескольких мест, таких как процессорный цикл ... – BananaBuisness 29 November 2015 в 04:51

Вы можете проследить его в объявлениях класса Java. Это из Math.class:

public static double random() {
    return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}

Это легко сделать в Eclipse. Focus & amp; F3.

0
ответ дан Tomasz 22 August 2018 в 01:14
поделиться
  • 1
    Я проголосую за вас, потому что @tethernova спрашивает, как генерируется случайное число ... – BananaBuisness 29 November 2015 в 04:22
  • 2
    Вы можете сделать это, если хотите. Я дал совет, чтобы попытаться разобраться в этом. – Tomasz 29 November 2015 в 04:23
Другие вопросы по тегам:

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