Просмотр полной версии : Случайное число.
engineer_f_R
09.12.2009, 18:48
Подскажите умный ответ на глупый вопрос =)
Как наиболее оптимально сгенерить случайное число от 1 до 28?
Добавлено через 13 минут
У меня есть мысль что Math.random()*28+1 но почемуто она мне кажется неверной.
bicubic_bublic
09.12.2009, 19:18
если целое - то не верно
для целого рандомного от 1 до 28 (включительно)
Math.floor(Math.random()*28) + 1
Ну если тебе нужно целое то нужно так
Math.round(Math.random()*27)+1
а в твоем примере 28 нужно заменить на 27
Math.random()*27+1
bicubic_bublic
09.12.2009, 19:19
Math.round(Math.random()*27) - это не совсем рандом..
числа 0 и 27 будут выдаваться в 2 раза реже чем все остальные.
engineer_f_R
09.12.2009, 19:26
А как сделать совсем рандом?
bicubic_bublic
09.12.2009, 19:28
А как сделать совсем рандом?
http://www.flasher.ru/forum/showpost.php?p=871507&postcount=3
engineer_f_R
09.12.2009, 19:40
Так а почему крайние значения в 2 раза реже выпадают?
bicubic_bublic
09.12.2009, 19:50
Так а почему крайние значения в 2 раза реже выпадают?
Math.round(Math.random()*27)
Math.random()*27 возвращает число от 0 до 27 с плавающей точкой каждое с одинаковой частотой
функция Math.round переводит таким образом.
0-0.5 -> 0 (частота 0.5 / 27)
0.5-1.5 -> 1 (частота 1 / 27)
1.5-2.5 -> 2 (частота 1 / 27)
...
25.5-26.5 -> 26 (частота 1 / 27)
26.5-27 -> 27 (частота 0.5 / 27)
engineer_f_R
09.12.2009, 20:18
Спасибо!
И как этого избежать? Хочется ведь чтобы всё было поровну.
Соглашусь
Math.floor(Math.random()*28) + 1
это оно
Спасибо!
И как этого избежать? Хочется ведь чтобы всё было поровну.
может так все-таки попробовать?
http://www.flasher.ru/forum/showpost.php?p=871507&postcount=3
Че спасибо? Че избежать? Бублик в первом своем сообщении уже дал ответы. Не тормозим.
Math.ceil(Math.random()*28)
от 1 до 28 включительно
nuToH, A если 0 выпадет =)
точно( returns a pseudo-random number n, where 0 <= n < 1
думал 0 < n <= 1 (
вот решение от Adobe с мин макс значениями:
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.