Случайное число в диапазоне javascript. Случайные числа. Округление к большему до ближайшего целого числа

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

Так что для тех, кто таких людей, вот мое предложение:.

Генерация случайных чисел с помощью Math.random() (скажем это n)

Now for , то пол n * 10 является вашим ответом и, если нужно , то пол n * 100 - ваш ответ и так далее.

Теперь войти в свою роль:

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

Так что рассмотрите свой диапазон ==> количество элементов в диапазоне = 247 - 78 + 1 = 170; (Поскольку обе границы включают

/*Mthod 1:*/ var i = 78, j = 247, k = 170, a = , b = , c, d, e, f, l = 0; for(; i = 56) { num = 1; } if (++num2 >= 56) { num2 = 1; } var num3 = this.SeedArray - this.SeedArray; if (num3 == 2147483647) { num3--; } if (num3 < 0) { num3 += 2147483647; } this.SeedArray = num3; this.inext = num; this.inextp = num2; return num3; }; Random.prototype.Sample = function () { return this.InternalSample() * 4.6566128752457969E-10; }; Random.prototype.GetSampleForLargeRange = function () { var num = this.InternalSample(); var flag = this.InternalSample() % 2 == 0; if (flag) { num = -num; } var num2 = num; num2 += 2147483646.0; return num2 / 4294967293.0; }; Random.prototype.Next = function (minValue, maxValue) { if (!minValue && !maxValue) return this.InternalSample(); var num = maxValue - minValue; if (num количество элементов диапазона = 247 - 78 + 1 = 170; (так как обе границы включены.

/*Mthod 1:*/ var i = 78, j = 247, k = 170, a = , b = , c, d, e, f, l = 0; for(; i 20) { bool = true; } else { bool = false; } } return number; }

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

Function genRandomNumber(how_many_number,min,max) { // parameters // how_many_number: how many numbers you want to generate. For example it is 5. // min(inclusive) : minimum/low value of a range. it must be any positive integer but less than max. i.e 4 // max(inclusive) : maximun value of a range. it must be any positive integer. i.e 50 // return type: array var random_number = ; for (var i = 0; i < how_many_number; i++) { var gen_num = parseInt((Math.random() * (max-min+1)) + min); do { var is_exist = random_number.indexOf(gen_num); if (is_exist >= 0) { gen_num = parseInt((Math.random() * (max-min+1)) + min); } else { random_number.push(gen_num); is_exist = -2; } } while (is_exist > -1); } document.getElementById("box").innerHTML = random_number; }

Чтобы получить случайное число, скажем, между 1 и 6, сначала выполните:

0.5 + (Math.random() * ((6 - 1) + 1))

Это умножает случайное число на 6 и затем добавляет к нему 0.5. Затем округлите число до положительного целого числа, выполнив:

Math.round(0.5 + (Math.random() * ((6 - 1) + 1))

Это округляет число до ближайшего целого числа.

Или, чтобы сделать это более понятным, выполните следующее:

Var value = 0.5 + (Math.random() * ((6 - 1) + 1)) var roll = Math.round(value); return roll;

В общем случае код для этого с использованием переменных:

Var value = (Min - 0.5) + (Math.random() * ((Max - Min) + 1)) var roll = Math.round(value); return roll;

Причиной отнять 0,5 от минимального значения является то, что использование только минимального значения позволит вам получить целое число, которое было бы больше вашего максимального значения. Убрав 0,5 от минимального значения, вы по существу предотвращаете округление максимального значения.

Надеюсь, что это поможет.

Случайное целое число между самым низким и самым высоким:

Function randomRange(l,h){ var range = (h-l); var random = Math.floor(Math.random()*range); if (random === 0){random+=1;} return l+random; }

Не самое элегантное решение.. но что-то быстрое.

Function getRandomInt(lower, upper) { //to create an even sample distribution return Math.floor(lower + (Math.random() * (upper - lower + 1))); //to produce an uneven sample distribution //return Math.round(lower + (Math.random() * (upper - lower))); //to exclude the max value from the possible values //return Math.floor(lower + (Math.random() * (upper - lower))); }

Чтобы проверить эту функцию и варианты этой функции, сохраните ниже HTML/JavaScript в файл и откройте его в браузере. В коде будет показан график, показывающий распределение одного миллиона вызовов функций. Код также будет записывать случаи краев, поэтому, если функция вырабатывает значение, большее, чем max, или меньше, чем min, you.will.know.about.it.

function getRandomInt(lower, upper) { //to create an even sample distribution return Math.floor(lower + (Math.random() * (upper - lower + 1))); //to produce an uneven sample distribution //return Math.round(lower + (Math.random() * (upper - lower))); //to exclude the max value from the possible values //return Math.floor(lower + (Math.random() * (upper - lower))); } var min = -5; var max = 5; var array = new Array(); for(var i = 0; i Number.MAX_SAFE_INTEGER || min < Number.MIN_SAFE_INTEGER) { throw new Error("Arguments must be safe integers."); } else if (range > maxGeneratedValue) { throw new Error("Range of ${range} (from ${min} to ${max}) > ${maxGeneratedValue}."); } else if (max < min) { throw new Error("max (${max}) must be >= min (${min})."); } else if (min === max) { return min; } let generated; do { generated = crypto.getRandomValues(new Uint32Array(1)); } while (generated > maxUnbiased); return min + (generated % possibleResultValues); }; console.log(randomInteger(-8, 8)); // -2 console.log(randomInteger(0, 0)); // 0 console.log(randomInteger(0, 0xFFFFFFFF)); // 944450079 console.log(randomInteger(-1, 0xFFFFFFFF)); // Error: Range of 4294967296 covering -1 to 4294967295 is > 4294967295. console.log(new Array(12).fill().map(n => randomInteger(8, 12))); //

Описание

Метод Math.random() возвращает псевдослучайное число между 0 и 1.

Псевдослучайное число создаётся в диапазоне от 0 (включительно) до 1 (исключительно), то есть возвращаемое число может быть нулём, но всегда будет меньше единицы.

Для округления числа с плавающей точкой до целого можно воспользоваться к примеру методом Math.floor() .

Синтаксис Math.random() Возвращаемое значение
  • Число с плавающей точкой в диапазоне от 0 (включительно) до 1 (исключительно).

Метод Math.random() в основном используют для генерации псевдо-случайного числа в определённом диапазоне. Например, нам надо получить число в диапазоне от 50 до 100 (включительно). Для этого нам придётся написать следующий код:

Document.write(Math.floor(Math.random() * 51 + 50));

Рассмотрим подробно как работает наш пример и почему используется именно такая форма записи. Первым делом нам надо указать минимальное получаемое значение из нужного диапазона, в нашем примере это число 50. Теперь нам нужно каким-то образом получить случайное число, которое при сложении с числом 50 не будет превышать в сумме число 100. Как мы знаем из математики, нахождение неизвестного слагаемого делается путём вычитания из суммы известного слагаемого. 100 - 50: получаем разность 50. Теперь для проверки, подходит нам это число или нет, умножим его на возможное минимальное и максимальное число возвращаемое методом Math.random(). Умножаем минимальное 0.004704564176082244 * 50 = 0.2... и максимальное 0.9999999999746223 * 50 = 49.9... И так мы видим, что при умножении разности на максимально возможное случайное число в результате даёт нам целую часть числа на единицу меньше, чем нужно. Чтобы исправить ситуацию, нам нужно всего лишь прибавить одну единицу к 50, т.е. 50 + 1 = 51, теперь если полученное число умножить на максимально возможно число возвращаемое методом у нас будет выходить число 50.9... - это то, что нам надо, после сложения чисел 50.9 + 50, получаем 100.9. Для округления числа до целого используем метод Math.floor(). Таким образом, формула для получения нужного числа выглядит следующим образом: max - min + 1. Перепишем приведённый выше пример:

Var max = 100, min = 50; document.write(Math.floor(Math.random() * (max - min + 1) + min));

Эта формула особенно полезна, когда заранее неизвестно в каком диапазоне необходимо получить случайное число.

Пример Название документа

Псевдослучайное число в диапазоне от 1 до 10.

var x; for(var i = 0; i < 10; i++) { x = document.getElementById("test"); x.innerHTML += Math.floor(Math.random() * 10 + 1) + "
"; }

Технически термин «генератор случайных чисел» – это абсурд, так как числа сами по себе не являются случайными. Например, 100 – это случайное число? А 25? Что в действительности означает этот термин, так это то, что создается последовательность чисел, появляющихся случайным образом. Это порождает более сложный вопрос: что такое последовательность случайных чисел? Единственно правильный ответ: последовательность случайных чисел – это последовательность, в которой все элементы являются несвязанными. Это определение приводит к такому парадоксу, что любая последовательность может быть как случайной, так и неслучайной в зависимости от того, как эта последовательность получена. Например, следующая строка чисел
1 2 3 4 5 6 7 8 9 0
была получена печатанием верхней строки клавиатуры по порядку, таким образом, последовательность не может рассматриваться как сгенерированная случайным образом. Но как быть, если вы получите ту же самую последовательность, вынимая пронумерованный теннисные шары из бочонка. В данном случае это уже случайным образом сгенерированная последовательность. Данный пример показывает, что случайность последовательности зависит от того, как она была получена, а не от нее самой.

Помните, что последовательность чисел, сгенерированная компьютером, является детерминированной: каждое число, кроме первого, зависит от предшествующих чисел. Технически это означает, что компьютером может быть сгенерирована только квазислучайная последовательность чисел, т.е. на самом деле они не являются истинно случайными. Однако, этого достаточно для большинства задач и такие последовательности для простоты будут называться случайными. Один очень интересный метод был разработан Джоном фон Нейманом; его часто называют среднеквадратичным. В данном методе предыдущее случайное число возводится в квадрат, а затем из результата выделяются средние цифры. Например, если вы создаете числа из трех цифр, а предыдущее число было 121, то возведение в квадрат дает результат 14641. Выделение трех средних цифр дает следующее случайное число 464. Недостатком данного метода является то, что он имеет очень короткий период повторения, называемый циклом. По данной причине данный метод сегодня не используется. Современные методы генерации случайных чисел значительно сложнее.

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

В PHP есть две группы функций по работе со случайными числами. Чисто внешне их можно отличить по префиксу mt_ у всех функций одной из групп.

Устаревшие функции
Функция rand. Возвращает целое число от нуля до значения RAND_MAX (которое равно 32767). Может иметь два необязательных целых параметра - если они указаны, то генерируется случайное число от первого параметра до второго.

Echo rand(); echo rand(1,100); // Выдаем случайное число от 1 до 100

Функция srand. Задает последовательность случайных чисел, выдаваемую функцией rand. Имеет целый параметр - при разных значениях этого параметра rand будет выдавать разные последовательности чисел. Функцию srand достаточно вызвать только один раз перед всеми вызовами функции rand. Пример использования:

Srand(1288); // Инициализация генератора случайных чисел for($i=0; $i

Понравилась статья? Поделиться с друзьями: