Если вам нужны криптографически стойкие случайные числа , лучше читать /dev/urandomвместе с Fileклассом.
Башня
А как насчет отрицательных случайных чисел (двойников)? Я пытаюсь реализовать метод randomRange, который будет генерировать, например, от -0,8 до 0,9 ... результат будет, например, -0,32
just_a_dude
2
@just_a_dude, который звучит как идеальный вопрос для stackoverflow. Подумайте о создании нового вопроса :)
Сет Лэдд
1
метод, который будет генерировать, например, от -0,8 до 0,9, прост. Вам просто нужно сопоставить значения. Ваш диапазон 0,8 + 0,9 = 1,7. Итак, если вы поместите rng.nextInt (1700), вы получите число от 0 до 1700. Разделите на 100 и уменьшите -0,8. Значение yourRnd = rng.nextInt (1700) /100.0-0.8. Есть больше вариантов, которые вы можете использовать, например, даже не использовать nextInt, а вместо этого удваивать 0-1, уменьшать на 1,7 и сдвигать -0,8
Veljac
28
Вы можете добиться этого с помощью Randomобъекта класса random.nextInt(max), который находится вdart:math библиотеке. nextInt()Метод требует максимального предела. Случайное число начинается с, 0и сам максимальный предел является исключительным.
import'dart:math';Random random =newRandom();int randomNumber = random.nextInt(100);// from 0 upto 99 included
Если вы хотите добавить минимальный лимит, добавьте минимальный лимит к результату
int randomNumber = random.nextInt(90)+10;// from 10 upto 99 included
разве ваш ответ не включает числа от 10 до 109 включительно?
Тим
@ Тим, спасибо, что заметили, я только что скопировал код из предыдущей строки. Разрешил это.
Самир Рахими
17
Если вам нужны криптографически безопасные случайные числа (например, для шифрования) и вы находитесь в браузере, вы можете использовать API криптографии DOM :
int random(){final ary =newInt32Array(1);
window.crypto.getRandomValues(ary);return ary[0];}
Это работает в Dartium, Chrome и Firefox, но, вероятно, не в других браузерах, поскольку это экспериментальный API.
Безопасный случайный API был только что добавлен в dart:math
newRandom.secure()
dart:mathRandomдобавлен secureконструктор, возвращающий криптографически безопасный генератор случайных чисел, который считывает из источника энтропии, предоставленного устройством для внедрения, для каждого сгенерированного случайного значения.
который делегирует window.crypto.getRandomValues()в браузере и в ОС (как urandomна сервере)
Этот новый API доступен в версии 1.14-dev или выше.
Сет Лэдд,
7
Не могу комментировать, потому что я только что создал эту учетную запись, но я хотел отметить, что решение @ eggrobot78 работает, но оно эксклюзивно для dart, поэтому оно не включает последний номер. Если вы измените последнюю строку на «r = min + rnd.nextInt (max - min + 1);», тогда она также должна включать последнее число.
Объяснение:
max =5;
min =3;Random rnd =newRandom();
r = min + rnd.nextInt(max - min);//max - min is 2//nextInt is exclusive so nextInt will return 0 through 1//3 is added so the line will give a number between 3 and 4//if you add the "+ 1" then it will return a number between 3 and 5
Альтернативным решением может быть использование следующего кода DRandom . Этот класс следует использовать с семенем. Он обеспечивает знакомый интерфейс того, что вы ожидаете от .NET, он был перенесен из моно-файла Random.cs. Этот код может быть небезопасным для криптографии и не был статистически протестирован.
Просто написал этот маленький класс для генерации нормального случайных чисел ... это была достойная отправная точка для проверки, которую мне нужно сделать. (Эти наборы будут распределяться по кривой в форме «колокола».) Начальное число будет установлено случайным образом, но если вы хотите иметь возможность повторно сгенерировать набор, вы можете просто передать какое-то конкретное начальное число, и тот же набор будет сгенерирован.
Затем вы можете просто использовать это, чтобы проверить среднее значение наборов из 1000 чисел, сгенерированных между низким и высоким пределом. Значения хранятся в классе, поэтому к ним можно получить доступ после создания экземпляра.
Позвольте мне решить этот вопрос на практическом примере в виде простого приложения для катания игральных костей, которое при нажатии случайным образом вызывает на экран одно из 6 изображений лиц игральных костей.
сначала объявите переменную, которая генерирует случайные числа (не забудьте импортировать dart.math). Затем объявите переменную, которая анализирует начальное случайное число в пределах ограничений от 1 до 6, как целое число.
Обе переменные являются статическими частными, чтобы их можно было инициализировать один раз. Это не так уж важно, но было бы хорошей практикой, если бы вам пришлось инициализировать целую кучу случайных чисел.
Теперь создайте виджет обнаружения жестов с ClipRRect в качестве дочернего, чтобы возвращать одно из шести изображений лиц игральных костей на экран при нажатии.
Ответы:
Используйте
Random
класс изdart:math
:Этот код был протестирован с виртуальной машиной Dart и dart2js на момент написания этой статьи.
источник
/dev/urandom
вместе сFile
классом.Вы можете добиться этого с помощью
Random
объекта классаrandom.nextInt(max)
, который находится вdart:math
библиотеке.nextInt()
Метод требует максимального предела. Случайное число начинается с,0
и сам максимальный предел является исключительным.Если вы хотите добавить минимальный лимит, добавьте минимальный лимит к результату
источник
Если вам нужны криптографически безопасные случайные числа (например, для шифрования) и вы находитесь в браузере, вы можете использовать API криптографии DOM :
Это работает в Dartium, Chrome и Firefox, но, вероятно, не в других браузерах, поскольку это экспериментальный API.
источник
Вот фрагмент для создания списка случайных чисел
Это сгенерирует список из 12 целых чисел от 0 до 99 (включительно).
источник
Безопасный случайный API был только что добавлен в
dart:math
который делегирует
window.crypto.getRandomValues()
в браузере и в ОС (какurandom
на сервере)источник
Не могу комментировать, потому что я только что создал эту учетную запись, но я хотел отметить, что решение @ eggrobot78 работает, но оно эксклюзивно для dart, поэтому оно не включает последний номер. Если вы измените последнюю строку на «r = min + rnd.nextInt (max - min + 1);», тогда она также должна включать последнее число.
Объяснение:
источник
попробуйте это, вы можете контролировать минимальное / максимальное значение:
источник
Альтернативным решением может быть использование следующего кода DRandom . Этот класс следует использовать с семенем. Он обеспечивает знакомый интерфейс того, что вы ожидаете от .NET, он был перенесен из моно-файла Random.cs. Этот код может быть небезопасным для криптографии и не был статистически протестирован.
источник
Просто написал этот маленький класс для генерации нормального случайных чисел ... это была достойная отправная точка для проверки, которую мне нужно сделать. (Эти наборы будут распределяться по кривой в форме «колокола».) Начальное число будет установлено случайным образом, но если вы хотите иметь возможность повторно сгенерировать набор, вы можете просто передать какое-то конкретное начальное число, и тот же набор будет сгенерирован.
Радоваться, веселиться...
Затем вы можете просто использовать это, чтобы проверить среднее значение наборов из 1000 чисел, сгенерированных между низким и высоким пределом. Значения хранятся в классе, поэтому к ним можно получить доступ после создания экземпляра.
_swarmii
источник
используйте эту библиотеку http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart предоставил хороший генератор случайных чисел, который, я думаю, скоро будет включен в SDK, надеюсь, это поможет
источник
Для меня проще всего сделать:
Благодаря объяснению здесь @ adam -inger .
источник
это сработало для меня
new Random().nextInt(100); // MAX = number
он даст от 0 до 99 случайное число
Eample ::
источник
Позвольте мне решить этот вопрос на практическом примере в виде простого приложения для катания игральных костей, которое при нажатии случайным образом вызывает на экран одно из 6 изображений лиц игральных костей.
сначала объявите переменную, которая генерирует случайные числа (не забудьте импортировать dart.math). Затем объявите переменную, которая анализирует начальное случайное число в пределах ограничений от 1 до 6, как целое число.
Обе переменные являются статическими частными, чтобы их можно было инициализировать один раз. Это не так уж важно, но было бы хорошей практикой, если бы вам пришлось инициализировать целую кучу случайных чисел.
Теперь создайте виджет обнаружения жестов с ClipRRect в качестве дочернего, чтобы возвращать одно из шести изображений лиц игральных костей на экран при нажатии.
Новое случайное число генерируется каждый раз, когда вы касаетесь экрана, и на это число ссылаются, чтобы выбрать изображение лица игральной кости.
Я надеялся, что этот пример помог :)
Приложение для игры в кости с использованием случайных чисел в дротике
источник