Меню

Как написать генератор нечетных случайных чисел

Генератор случайных нечётных чисел.

Помогите пожалуйста! Не могу понять почему не работает код. На JS только первый месяц занимаюсь.

Генератор случайных нечётных чисел в диапазоне между n и m ВКЛЮЧИТЕЛЬНО. Причём, n и m могут быть не только положительными , но и отрицательными, а также может быть, что (n > m) или (n 0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Генератор случайных нечетных чисел
Вообщем есть код, сам написал, я новенький. Но что то не понимаю. let n = 100; let m = -50; .

Создать генератор случайных и псевдослучайных чисел с вводом данных
Всем привет, дорогой КиберФорум! Передо мной, начинающим ЯваСкриптером стоит 2 задачки: 1.

Генератор случайных чисел без функции Math.random
Помогите сделать код есть вот такая формула «Если пользователю потребуется, чтобы случайное число x.

Генератор случайных чисел в JavaScript
Существует и если нет то как самому организовать генератор случайных сичел, что то аналогичное.

У меня получилось вот так решить задачу без if и пр.

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Node.js генератор случайных чисел
всем привет,задача такая создать генератор случайных чисел,с генерацией числа на сервере, в общем.

Банальный генератор случайных НЕповторяющихся чисел
В нашей глобальной свалке ничего нет конкретного, ни на одном форуме нет самого простого банального.

Создать файл из 50 целых чисел, используя генератор случайных чисел
Создать файл из 50 целых чисел, используя генератор случайных чисел. Вывести эти числа на экран.

Создать генератор случайных чисел с вычеркиванием сгенерированных чисел
Помогите пож. решить задачку: 1 Есть диапазон чисел от 1 до «i» 2 Необходимо выбрать случайное.

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

Генератор случайных чисел
Добрый день, друзья :)! Подскажите, пожалуйста. в учебнике программа есть такая, но у меня не.

Источник

Создание нечетного случайного числа между заданным диапазоном

Как генерировать нечетное случайное число между заданным диапазоном..

для например: для ряда между 1 до 6 .. Случайный нет 3 или 1 или 5

метод генерации случайного No:

Refer как генерировать случайные целые числа в определенном диапазоне в Java?

Метод Генерации Нечетного Случайного No:

эта функция всегда будет преобразовывать 2 в 3, а не 1 Можем ли мы сделать это более случайной функцией что может преобразовать 2 Иногда в 3, а иногда в 1 ??

10 ответов

предполагая, что max включен, я бы предложил следующее:

это приводит к равномерному распределению среди всех нечетных чисел.

Если вы хотите включить случайность в направлении, а также использовать случайные числа для того же.

вместо генерации случайного числа между 0 и 6, генерировать один между 0 и 5 и округлить до ближайшего нечетного числа, таким образом, вы будете иметь идеальное распределение (33% для каждой возможности (1, 3, 5))

для этого вам нужно сгенерировать второе псевдослучайное число для добавления или вычитания 1

интересно, почему другие ответы все используют int cast для генерации случайного числа. Почему бы не создать случайное целое число сразу, который более точен чем реальный путь номера?

для генерации нечетного числа из целого числа вы можете использовать n * 2 + 1 на самом деле вы генерируете случайные числа и применяете преобразование после этого

это будет работать, даже если диапазон [1,5] [2,5] [2,6] [1,6]

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

придерживайтесь решения CrazyCasta или J. A.

Как насчет проверки возврата из Math.random () как плавающее число. Если его часть int является четным числом, преобразуйте вверх / вниз на основе его плавающей части. Например:

Читайте также:  Генератор тэм 2 гп 300

предположим математике.random () возвращает x.y; если x четное, вернитесь (y>=0.5)?(x+1): (x-1)

будет ли это рандомизировано немного?

пусть rouding выше или ниже зависит от случайных Эпсилон.

Источник

Случайные числа не случайны

FullStack CTO

FullStack CTO

Как создать генератор случайных чисел на JS и предсказать Math.random()

Вы когда-нибудь задумывались, как работает Math.random()? Что такое случайное число и как оно получается? А представьте вопрос на собеседовании — напишите свой генератор случайных чисел в пару строк кода. И так, что же это такое, случайность и возможно ли ее предсказать.

Генератор псевдослучайных чисел и генератор случайных чисел

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

Этот источник используется для накопления энтропии с последующим получением из неё начального значения (initial value, seed), которое необходимо генераторам случайных чисел (ГСЧ) для формирования случайных чисел.

Генератор ПсевдоСлучайных Чисел использует единственное начальное значение, откуда и следует его псевдослучайность, в то время как Генератор Случайных Чисел всегда формирует случайное число, имея в начале высококачественную случайную величину, которая берется из различных источников энтропии.

Энтропия — это мера беспорядка. Информационная энтропия — мера неопределённости или непредсказуемости информации.

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

ГПСЧ имеет некоторый алгоритм, который можно воспроизвести.
ГСЧ — это получение чисел полностью из какого либо шума, возможность просчитать который стремится к нулю. При этом в ГСЧ есть определенные алгоритмы для выравнивания распределения.

Придумываем алгоритм ГПСЧ

Генератор псевдослучайных чисел (ГПСЧ, англ. pseudorandom number generator, PRNG) — алгоритм, порождающий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно равномерному).

Мы можем взять последовательность каких-то чисел и брать от них модуль числа. Самый простой пример, который приходит в голову. Нам нужно подумать, какую последовательность взять и модуль от чего. Если просто в лоб от 0 до N и модуль 2, то получится генератор 1 и 0:

Эта функция генерит нам последовательность 01010101010101… и назвать ее даже псевдослучайной никак нельзя. Чтобы генератор был случайным, он должен проходить тест на следующий бит. Но у нас не стоит такой задачи. Тем не менее даже без всяких тестов мы можем предсказать следующую последовательность, значит такой алгоритм в лоб не подходит, но мы в нужном направлении.

А что если взять какую-то известную, но нелинейную последовательность, например число PI. А в качестве значения для модуля будем брать не 2, а что-то другое. Можно даже подумать на тему меняющегося значения модуля. Последовательность цифр в числе Pi считается случайной. Генератор может работать, используя числа Пи, начиная с какой-то неизвестной точки. Пример такого алгоритма, с последовательностью на базе PI и с изменяемым модулем:

Но в JS число PI можно вывести только до 48 знака и не более. Поэтому предсказать такую последовательность все так же легко и каждый запуск такого генератора будет выдавать всегда одни и те же числа. Но наш генератор уже стал показывать числа от 0 до 9. Кстати, так выглядит распределение по выпадению чисел при 10000 итерациях:

Распределение очень неравномерное, но мы получим генератор чисел от 0 до 9.

Читайте также:  Зарядное устройство из диодного моста автомобильного генератора

Мы можем взять не число Pi, а время в числовом представлении и это число рассматривать как последовательность цифр, причем для того, чтобы каждый раз последовательность не повторялась, мы будем считывать ее с конца. Итого наш алгоритм нашего ГПСЧ будет выглядеть так:

Вот это уже похоже на генератор псевдослучайных чисел. И тот же Math.random() — это ГПСЧ, про него мы поговорим чуть позже. При этом у нас каждый раз первое число получается разным.

Собственно на этих простых примерах можно понять как работают более сложные генераторы случайных числе. И есть даже готовые алгоритмы. Для примера разберем один из них — это Линейный конгруэнтный ГПСЧ(LCPRNG).

Линейный конгруэнтный ГПСЧ

Линейный конгруэнтный ГПСЧ(LCPRNG) — это распространённый метод для генерации псевдослучайных чисел. Он не обладает криптографической стойкостью. Этот метод заключается в вычислении членов линейной рекуррентной последовательности по модулю некоторого натурального числа m, задаваемой следующей формулой:

где a(multiplier), c(addend), m(mask) — некоторые целочисленные коэффициенты. Получаемая последовательность зависит от выбора стартового числа — т.е. seed. При разных значениях seed получаются различные последовательности случайных чисел. Пример реализации такого алгоритма на JavaScript:

Многие языки программирования используют LСPRNG (но не именно такой алгоритм(!)).

Как говорилось выше, такую последовательность можно предсказать. Так зачем нам ГПСЧ? Если говорить про безопасность, то ГПСЧ — это проблема. Если говорить про другие задачи, то эти свойства — могут сыграть в плюс. Например для различных спец эффектов и анимаций графики может понадобиться частый вызов random. И вот тут важны распределение значений и перформанс! Секурные алгоритмы не могут похвастать скоростью работы.

Еще одно свойство — воспроизводимость. Некоторые реализации позволяют задать seed, и это очень полезно, если последовательность должна повторяться. Воспроизведение нужно в тестах, например. И еще много других вещей существует, для которых не нужен безопасный ГСЧ.

Как устроен Math.random()

Метод Math.random() возвращает псевдослучайное число с плавающей запятой из диапазона [0, 1) , то есть, от 0 (включительно) до 1 (но не включая 1), которое затем можно отмасштабировать до нужного диапазона. Реализация сама выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.

Как устроен алгоритм Math.random() — интересный вопрос. До недавнего времени, а именно до 49 Chrome использовался алгоритм MWC1616:

Именно этот алгоритм генерит нам последовательность псевдослучайных чисел в промежутке между 0 и 1.

Исправил ошибку в алгоритме MWC1616 (пропущенные скобки). Эта же ошибка повторяется и в статье https://v8project.blogspot.ru/2015/12/theres-mathrandom-and-then-theres.html

то видим, что должны быть скобки:

Предсказываем Math.random()

Чем это было чревато? Есть такой квест: https://alf.nu/ReturnTrue

Что нужно вписать вместо вопросов, чтобы функция вернула true? Кажется что это невозможно. Но, это возможно, если вы заглядывали в спеку и видели алгоритм ГПСЧ V8. Решение этой задачи в свое время мне показал Роман Дворнов:

Этот код работал в 70% случаев для Chrome

Видите эти равномерности на левом слайде? Изображение показывает проблему с распределением значений. На картинке слева видно, что значения местами сильно группируются, а местами выпадают большие фрагменты. Как следствие — числа можно предсказать.

Выходит что мы можем отреверсить Math.random() и предсказать, какое было загадано число на основе того, что получили в данный момент времени. Для этого получаем два значения через Math.random(). Затем вычисляем внутреннее состояние по этим значениям. Имея внутреннее состояние можем предсказывать следующие значения Math.random() при этом не меняя внутреннее состояние. Меняем код так так, чтобы вместо следующего возвращалось предыдущее значение. Собственно все это и описано в коде-решении для задачи random4. Но потом алгоритм изменили (подробности читайте в спеке). Его можно будет сломать, как только у нас в JS появится нормальная работа с 64 битными числами. Но это уже будет другая история.

Читайте также:  Генератор не дает тока или дает малый зарядный ток причины

Новый алгоритм выглядит так:

Его все так же можно будет просчитать и предсказать. Но пока у нас нет “длинной математики” в JS. Можно попробовать через TypedArray сделать или использовать специальные библиотеки. Возможно кто-то однажды снова напишет предсказатель. Возможно это будешь ты, читатель. Кто знает ?

Сrypto Random Values

Метод Math.random() не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (API криптографии в вебе) и более точный метод window.crypto.getRandomValues() .

Пример генерации случайного числа:

Но, в отличие от ГПСЧ Math.random(), этот метод очень ресурсоемкий. Дело в том, что данный генератор использует системные вызовы в ОС, чтобы получить доступ к источникам энтропии (мак адрес, цпу, температуре, etc…).

Материалы про Math.random()

Больше про random в спецификации:

Хорошая статья про работу рандомайзера

Пример реализации предсказателя с Math.random()

Кстати, следить за обновлениями и прочими материалами от меня можно в телеграм канале: @prowebit

В этом канале публикую не только статьи из этого блога, но и различные новости и мысли. Подписывайтесь ?

Источник

Генератор случайных нечетных чисел

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Java Script, генератор случайных нечётных чисел
Помогите пожалуйста! Не могу понять почему не работает код. На JS только первый месяц занимаюсь. .

Генератор случайных чисел без функции Math.random
Помогите сделать код есть вот такая формула «Если пользователю потребуется, чтобы случайное число x.

Создать генератор случайных и псевдослучайных чисел с вводом данных
Всем привет, дорогой КиберФорум! Передо мной, начинающим ЯваСкриптером стоит 2 задачки: 1.

Node.js генератор случайных чисел
всем привет,задача такая создать генератор случайных чисел,с генерацией числа на сервере, в общем.

gogolik, спасибо! Но задача сделать без if и циклов.

И попробуйте вывести ваше решение с такие знfчениями: console.log(randomOdd(-1, 1));

Добавлено через 9 минут
Вот. И не заметил, как ответили. При вызове с -1 и 1 правда 1 не возвращается никогда.

Добавлено через 30 минут
Понял, что ошибся. Вроде это решение лучше:

Решение

У меня впечатление, что задача без проверок if нерешаемая.
Достаточно взять диапазон [4,4] и всё сыпется.
В условии задачи не написано, что нельзя брать диапазон [4,4].

nikolya223, ваш алгоритм врет на частоте распределения чисел.

Добавлено через 6 минут
———-
Хотя, если может быть n > m или n Добавлено через 37 минут
Прикольно. Тогда всё получается просто )))

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Генератор случайных чисел в JavaScript
Существует и если нет то как самому организовать генератор случайных сичел, что то аналогичное.

Банальный генератор случайных НЕповторяющихся чисел
В нашей глобальной свалке ничего нет конкретного, ни на одном форуме нет самого простого банального.

Создать файл из 50 целых чисел, используя генератор случайных чисел
Создать файл из 50 целых чисел, используя генератор случайных чисел. Вывести эти числа на экран.

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

Создать генератор случайных чисел с вычеркиванием сгенерированных чисел
Помогите пож. решить задачку: 1 Есть диапазон чисел от 1 до «i» 2 Необходимо выбрать случайное.

Генератор случайных чисел
Хочу чтобы при нажатии на кнопку , либо при запуске программы заполнились 3шт textbox рандомными.

Источник

Adblock
detector