Заметим, что числа в яваскрипт хранятся в формате с плавающей точкой IEEE 754 с округлением в сторону ближайшего четного. Поэтому иногда, в очень редких случаях, возможна генерация обычно исключенной верхней границы.
Пример: Cлучайное число от 0(включительно) до 1
function getRandom()
{
return Math.random();
}
Пример: Случайное число между min и max
function getRandomArbitary(min, max)
{
return Math.random() * (max - min) + min;
}
Пример: Случайное целое между min и max
// использование Math.round() даст неравномерное распределение!
function getRandomInt(min, max)
{
return Math.floor(Math.random() * (max - min + 1)) + min;
}
добавил в копилку))
Шакал!
А почему нельзя сделать так?
Или есть подвох?
Ой блин!
Я Math.random(); перепутал с пхпшным rand();
))
function getRandomArbitary(min, max)
{return Math.random() * (max - min) + min;}
А зачем "* (max - min)"?
Math.random() возвращает дробное число от 0 до 1.
0 ≤ Math.random() < 1
Поэтому нужно получить случайное число от 0 до разницы между максимумом и минимумом (решается умножением этой разницы на случайное число) и добавить минимум.
Math.floor(Math.random() * (max - min + 1)) + min;
В результате будет число min, т.к. умножение на 0 идет
C чего бы это?
конечно всё однозначно помогло вот только подскажите как это рандомное значение присвоить переменной?
а вот кстате и еще 1 подвох смотрите т к функция присваивает дробное значение то после такой функции результаты частенько придется округлять
Воистину
По моему, выражение по поиску случайного целого между min и max Math.floor(Math.random() * (max - min + 1)) + min; даст дробный результат, если min будет дробным.
И еще, не учитывается, что может быть 2 дробных числа, между которыми не существует целого, например 1,5 и 1,7.
Ну вы еще про то, что max может оказаться меньше чем min скажите
function getRandomArbitary(min, max) { return Math.random() * (max - min) + min; }// использование Math.round() даст неравномерное распределение! function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }Зачем такие "Сложности"?Когда можно так:
function getRandomArbitary (max) { return Math.random() * max; }function getRandomArbitary (max) { return Math.random() * (max +1); }// использование Math.round() даст неравномерное распределение! function getRandomInt(min, max) { return Math.floor(Math.random() * max)+min; }function getRandomInt { return Math.floor(Math.random() * 6)+6;//11 }ты хоть сам проверь вначале свой код)
как альтернатива:
Math.floor(Math.random()*196) + 5 // от 5 до 200
// случайное число без повторов!
var randNum;
var randNumOld;
function getRandomInt(min, max)
{
randNum = Math.floor(Math.random() * (max - min + 1)) + min;
if(randNum==randNumOld) getRandomInt(1, kolFoto);
randNumOld = randNum;
return randNum;
}
а нельзя
function random(max){math.floor(math.random() * max);}Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.