Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.08.2007, 04:17
54321go вне форума Посмотреть профиль Отправить личное сообщение для 54321go Найти все сообщения от 54321go
  № 1  
Ответить с цитированием
54321go

Регистрация: Sep 2006
Сообщений: 453
По умолчанию переменные

Код:
	var m1:Number = Math.floor(Math.random() * 10);
	var m2:Number = Math.floor(Math.random() * 10);
	var m3:Number = Math.floor(Math.random() * 10);
	var m4:Number = Math.floor(Math.random() * 10);
Как сделать чтобы переменные m1, m1, m3, m4 были разные? То-есть сделать так чтобы не было совпадений.

Старый 27.08.2007, 04:31
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 2  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
используй:
Код:
m1 = Math.floor (Math.random ()*10);
m2 = Math.floor (Math.random ()*10);
m3 = Math.floor (Math.random ()*10);
m4 = Math.floor (Math.random ()*10);
if (m2 == m1) {
	m2 = Math.floor (Math.random ()*10);
} else if (m3 == m2) {
	m3 = Math.floor (Math.random ()*10);
} else if (m4 == m3) {
	m4 = Math.floor (Math.random ()*10);
}
trace (m1+', '+m2+', '+m3+', '+m4);

Старый 27.08.2007, 04:36
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 3  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
2 Mr. Fixit

А если m4 будет равной m1? Если m2 == m1, то дальнейшие if вообще не выполнятся. Следуя этой логике надо пихать все это в цикл, что добавит проблем

Надо так:
Код:
function getNumArray($num:Number):Array {
	if ($num<0) {
		return;
	}
	var _result:Array = new Array();
	for (var i:Number = 0; i<$num; i++) {
		_result.push(i);
	}
	return _result;
}
function randomAdv($source:Array):Number {
	var _index:Number = Math.floor(Math.random()*$source.length);
	return $source.splice(_index,1)[0];
	
}
var _source:Array = getNumArray(10);
var m1:Number = randomAdv(_source);
var m2:Number = randomAdv(_source);
var m3:Number = randomAdv(_source);
var m4:Number = randomAdv(_source);
trace(m1+" "+m2+" "+m3+" "+m4);
__________________
4am is time to rock


Последний раз редактировалось DarkLight; 27.08.2007 в 04:42.
Старый 27.08.2007, 04:53
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 4  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
DarkLight
Проверьте сначала мой код, а потом делайте выводы.

Вы хороший код написали.
Разъясните, что обозначает эта строка(и как тут взаимодействует [0]):
Код:
source.splice(_index,1)[0];

Старый 27.08.2007, 05:00
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 5  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
На вход подается массив значений, из него выбирается элемент с рандомным номером, который при этом удаляется из массива. Т к splice возвращает массив, даже если элемент удаляется один - беру нулевой элемент.

Ваш код в трейсе в ходе тестирования выдал:
Код:
8, 2, 0, 4
1, 8, 1, 6//  повтор
2, 4, 8, 0
7, 1, 8, 1//  повтор
9, 3, 5, 0
5, 2, 6, 2// повтор
__________________
4am is time to rock


Последний раз редактировалось DarkLight; 27.08.2007 в 05:02.
Старый 27.08.2007, 05:02
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 6  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
да, вот там и повтор. Что смог сделать, то сделал. Дальше - Лучше.

Старый 27.08.2007, 10:18
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 7  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
А зачем начинать все заново с 1 переменной, если совпадение допустим в 3?
Тогда из 10 переменных сколько это будет выполняться то!!!
__________________
"We Are The Champions My Friends!" Queen

Старый 27.08.2007, 10:59
Tardos Mors вне форума Посмотреть профиль Отправить личное сообщение для Tardos Mors Найти все сообщения от Tardos Mors
  № 8  
Ответить с цитированием
Tardos Mors

Регистрация: Jul 2006
Адрес: Новосибирск
Сообщений: 530
Отправить сообщение для Tardos Mors с помощью ICQ
Код:
var vars:Array = new Array ();
function unicNum(searchArray:Array, max:Number, min:Number):Number
{
	if (max == null) return;
	if (min == null) min = 0;
	var currentNum = Math.round(Math.random()*(max - min)) + min;
	var error:Boolean = false;
	for (var i:Number = 0; i < searchArray.length; i++)
	{
		if (searchArray[i] == currentNum)
		{
			error = true;
			break;
		}
	}
	if (error == true) currentNum = unicNum(searchArray, max, min);
	return currentNum;
}
for (var a:Number = 0; a < 5; a ++)
{
	vars[a] = unicNum(vars, 10);
	_root["m"+a] = vars[a];
}
trace (m0 + ", " + m1 + ", " + m2 + ", " + m3 + ", " + m4);

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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