PDA

Просмотр полной версии : Случайное число.


engineer_f_R
09.12.2009, 18:48
Подскажите умный ответ на глупый вопрос =)

Как наиболее оптимально сгенерить случайное число от 1 до 28?

Добавлено через 13 минут
У меня есть мысль что Math.random()*28+1 но почемуто она мне кажется неверной.

VVall
09.12.2009, 19:09
Вам только кажется.

bicubic_bublic
09.12.2009, 19:18
если целое - то не верно
для целого рандомного от 1 до 28 (включительно)
Math.floor(Math.random()*28) + 1

BAHUS
09.12.2009, 19:18
Ну если тебе нужно целое то нужно так


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
Спасибо!
И как этого избежать? Хочется ведь чтобы всё было поровну.

BAHUS
09.12.2009, 20:18
Соглашусь

Math.floor(Math.random()*28) + 1

это оно

Jewelz
10.12.2009, 10:00
Спасибо!
И как этого избежать? Хочется ведь чтобы всё было поровну.

может так все-таки попробовать?

http://www.flasher.ru/forum/showpost.php?p=871507&postcount=3

kackbip
10.12.2009, 11:30
Че спасибо? Че избежать? Бублик в первом своем сообщении уже дал ответы. Не тормозим.

nuToH
11.12.2009, 16:32
Math.ceil(Math.random()*28)

от 1 до 28 включительно

dimarik
11.12.2009, 17:49
nuToH, A если 0 выпадет =)

nuToH
11.12.2009, 18:12
точно( 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;
}