Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   генерация чисел и проверка на повтор Javascript (https://javascript.ru/forum/misc/1116-generaciya-chisel-i-proverka-na-povtor-javascript.html)

jesuspunk 24.03.2008 16:53

генерация чисел и проверка на повтор Javascript
 
я уже сойду с ума, не пойму пчм при проверки в цикле масива на повтор в масиве одни 0, да я вначале заполняю его 0.

вообщем выкладываю свой код, вдруг у кого мысли будут по этому....

это яваскрипт. пхп не катит! сам знаю как на нём сделать.
помогите пожалуйста

myar = new Array(); //создаем массив
i2=0;
z=0;
function rndz(n)
{
n2 = n;
//alert(n2);
if (i2 == n2)
{
//alert("end1");
//alert(z);
rndz(0);
}
else
{
for (i=1; i<=n2; i=i+1)
{
 rnd1 = parseInt((Math.random() * 10)); //
 rnd2 = parseInt((Math.random() * 10)); // "генерируем число"
 rnd = rnd1 + rnd2;  
 //myar[i] = rnd;
 //alert(rnd);
 for (i=1; i<=n2; i=i+1)
 {
 //document.write("p "+myar[i]+" x="+i+"<br>");
 if (myar[i] == rnd) 
 {
 //alert(myar[i]+"="+rnd+" x="+i);
 rnd1 = parseInt((Math.random() * 10)); //
 rnd2 = parseInt((Math.random() * 10)); // "генерируем число"
 rnd = rnd1 + rnd2;                     //
 //alert(myar[i]+"="+rnd+" x="+i);
 z++;
 //document.write("p "+myar[i]+" x="+i+"<br>");
 for (i=1; i<=n2; i=i+1)
 {
 if (myar[i] == rnd) 
 {
 //alert(myar[i]+"="+rnd+" x="+i);
 rnd1 = parseInt((Math.random() * 10)); //
 rnd2 = parseInt((Math.random() * 10)); // "генерируем число"
 rnd = rnd1 + rnd2;                     //
 //alert(myar[i]+"="+rnd+" x="+i);
 z++;
 
 }
 }
 }
 }
 myar[i] = rnd;
 document.write(" "+myar[i]+" ");
 i2=i2+1;
 rndz(n2);
}
}
}
rndz(55);

tenshi 25.03.2008 14:06

покажи, как это сделать на php.

jesuspunk 25.03.2008 14:31

вот ява код если кому нужно сам допер как сделать, бадун великая весчь :)

tenshi, как будет время напишу.

var myar = new Array();

function frnd_num()
{
     rnd1 = parseInt((Math.random() * 10)); //
     rnd2 = parseInt((Math.random() * 10)); // "генерируем число"
     rnd = rnd1 + rnd2;                     //
     return rnd;
}

function rndnumcheck(rndnum,num)
{
countercheck = 0;
while(countercheck < num)
     {
      if (myar[countercheck]== rndnum) {rndnum = frnd_num(); rndnum = rndnumcheck(rndnum); continue;}
      countercheck++; 
     }
     return rndnum;
}

function fill(num)
{
  counter = 0;
  
  while(counter < num)
  {
     rndnum = frnd_num();
     rndnum = rndnumcheck(rndnum,num);
     myar[counter] = rndnum;
     document.write(" "+myar[counter]+" ");
     counter++;
  }
  return;
}
fill(10);

Kolyaj 25.03.2008 14:31

jesuspunk, а вас не смущает, что у трех вложенных циклов счетчик один? (это если отбросить мысль о том, что такой код надо выбрасывать в топку сразу после создания, и уж тем более никому не показывать)

UPD: Не успел, это было к первому сообщению.

Kolyaj 25.03.2008 14:37

Цитата:

Сообщение от jesuspunk
вот ява код если кому нужно

Ну если бы вы еще написали, что он делает.

Пару вопросов:
1. В чем магический смысл сложения двух случайных чисел?
2. Почему вы игнорируете ключевое слово var внутри функций. (Предполагая ответ: это не PHP все-таки).

jesuspunk 25.03.2008 14:46

Цитата:

Сообщение от Kolyaj (Сообщение 1757)
jesuspunk, а вас не смущает, что у трех вложенных циклов счетчик один? (это если отбросить мысль о том, что такой код надо выбрасывать в топку сразу после создания, и уж тем более никому не показывать)

UPD: Не успел, это было к первому сообщению.

не смущает всё равно не работает :) да были там разыне переменые в циклах, просто вот что было в последний раз, то сюда и пихнул.

Цитата:

Сообщение от Kolyaj (Сообщение 1758)
Ну если бы вы еще написали, что он делает.

Пару вопросов:
1. В чем магический смысл сложения двух случайных чисел?
2. Почему вы игнорируете ключевое слово var внутри функций. (Предполагая ответ: это не PHP все-таки).

делает масив и выводит его построчно, в масиве рандмные цифры без повторения, аля ротатор для банеров мона юзать, но мну для другова дела.

1-ое: получение значений от 0 до 20 :) мне в этом диапазоне нужны цифры, получилось, замарачиватся как по другому сделать не охото... я видел там чето про брать время процент от него и колдовство какое то чтоб получить в определеном диапозоне.

2-ое: это не пхп все таки. и без var работает :Р

Kolyaj 25.03.2008 15:10

Цитата:

Сообщение от jesuspunk
1-ое: получение значений от 0 до 20

Math.round(Math.random() * 20)


Цитата:

Сообщение от jesuspunk
2-ое: это не пхп все таки. и без var работает :Р

Конечно работает, только это не переменные получаются, а свойства объекта window, со всеми вытекающими.

jesuspunk 25.03.2008 15:32

Цитата:

Сообщение от Kolyaj (Сообщение 1761)
Math.round(Math.random() * 20)



Конечно работает, только это не переменные получаются, а свойства объекта window, со всеми вытекающими.

Спс. я в программирование не оч, что и в пхп, что в яве...


Часовой пояс GMT +3, время: 18:52.