![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2006
Сообщений: 453
|
Как сделать чтобы переменные m1, m1, m3, m4 были разные? То-есть сделать так чтобы не было совпадений.
|
|
|||||
|
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);
|
|
|||||
|
ветеран форума
|
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. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
DarkLight
Проверьте сначала мой код, а потом делайте выводы. Вы хороший код написали. Разъясните, что обозначает эта строка(и как тут взаимодействует [0]): |
|
|||||
|
ветеран форума
|
На вход подается массив значений, из него выбирается элемент с рандомным номером, который при этом удаляется из массива. Т к splice возвращает массив, даже если элемент удаляется один - беру нулевой элемент.
Ваш код в трейсе в ходе тестирования выдал:
__________________
4am is time to rock Последний раз редактировалось DarkLight; 27.08.2007 в 05:02. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
да, вот там и повтор. Что смог сделать, то сделал. Дальше - Лучше.
|
|
|||||
|
А зачем начинать все заново с 1 переменной, если совпадение допустим в 3?
Тогда из 10 переменных сколько это будет выполняться то!!!
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
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:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|