Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   генерация числа или от -100 до -50, или от 100 до 50 (http://www.flasher.ru/forum/showthread.php?t=144650)

Dr_Bra 17.09.2010 14:41

генерация числа или от -100 до -50, или от 100 до 50
 
Всем привет!
Помогите, пожалуйста, разобраться. Можно ли делать так?
Код AS3:

var xGoOn:Number();
xGoOn = Math.random() * - 50 - 50 || Math.random() * + 50 + 50; // скрипт не работает

То есть я хочу получить число, либо от -100 до -50, либо от 100 до 50. Подскажите, как это правильно сделать??

Jewelz 17.09.2010 14:46

конечно не будет работать || преобразует операнды в булевые величины

можно сделать 2 рандома: один на знак, второй на значение

Psycho Tiger 17.09.2010 14:49

А можно просто сделать рандом в 2 раза больше и отнять от него максимальное значение.

Dr_Bra 17.09.2010 14:50

на значение –*то есть на цифру, тут все ясно.
Код AS3:

var xGoOn:Number();
xGoOn = Math.random() * 50 + 50;

а как сделать рэндом на знак?

leofit 17.09.2010 14:56

Код AS3:

var xGoOn:Number();
xGoOn = Math.random() * 50 + 50;
xGoOn = Math.random() > .5 ? xGoOn*-1 :xGoOn;


Psycho Tiger 17.09.2010 14:57

Код AS3:

xGoOn = (Math.random() * 50 + 50) * (Math.random() > 0.5 ? 1 : -1);


Dr_Bra 17.09.2010 15:01

leofit, Psycho Tiger, спасибо!!
Работает, как надо!

jony_e 17.09.2010 15:02

написать проверку, если Math.random() больше 0.5 значит будет плюс, если меньше- минус. Как вариант.

КорДум 17.09.2010 15:34

jony_e, как бы Тигер и leofit это уже сделали.

jony_e 17.09.2010 16:23

я это увидел после того, как написал свое. У меня много вкладок были открыты и я их не рефрешил.

i.o. 17.09.2010 16:32

А можно и без проверок написать:
Код AS3:

xGoOn = (50 + 50 * Math.random()) * (1 - 2 * int(2 * Math.random()));


Eric Gurt 17.09.2010 20:42

Код AS3:

var xGoOn:Number;
if (Math.random()>0.5)
xGoOn = Math.random() * 50 - 100;
else
xGoOn = Math.random() * 50 + 50;


i.o. 17.09.2010 20:59

Eric Gurt, в посте номер 5 то же самое.

f.g.programmer 17.09.2010 21:05

Код AS3:

var xGoOn:Number = Math.random() * 100 - 50;
xGoOn = (xGoOn < 0) ? xGoOn - 50 : xGoOn + 50;


КорДум 17.09.2010 23:51

Все то же самое, только запись другая.

-De- 17.09.2010 23:57

не, тут только один вызов Math.random(), потому думаю этот вариант быстрее других.

КорДум 18.09.2010 00:11

Ну, только если в этом плане...

honest_man 18.09.2010 01:30

Простите мне мою педантичность... А правда ли, что вышеприведенный код может вернуть число только в диапазоне от -99 до -50 либо от 50 до 99?

Рандом не возвращает единиц?

i.o. 18.09.2010 04:14

Код:

Math.random() returns a pseudo-random number n, where 0 <= n < 1

f.g.programmer 18.09.2010 10:21

0 <= Math.random() < 1
результат будет
-100 <= xGoOn < -50 или 50 <= xGoOn < 100

honest_man 18.09.2010 12:33

Цитата:

Сообщение от f.g.programmer (Сообщение 936816)
0 <= Math.random() < 1
результат будет
-100 <= xGoOn < -50 или 50 <= xGoOn < 100

Эм... а разве не:
-100 < xGoOn <= -50 or 50 <= xGoOn < 100
?

А, ну да, ваш код: -100 <= xGoOn < -50 or 50 <= xGoOn < 100
Понял свои ошибки)

f.g.programmer 18.09.2010 12:56

В некоторых других вариантах с двумя рандомами да, в моём нет
Код AS3:

var xGoOn:Number = Math.random() * 100 - 50// [-50;50)
xGoOn = (xGoOn < 0) ? xGoOn - 50 : xGoOn + 50; // [-100;-50) | [50;100)



Часовой пояс GMT +4, время: 19:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.