![]() |
|
||||||||||
|
|
|
|||||
|
проблема, нужно чтото типа жеребъевщика, задаеш число, он генерирует числа от 1 до этого числа
проблема в том чтобы эти чистла не повторялись не знаю че делать, помогите вот что получилось, пока сделал толлько чтбы в паре чисел не было повторов, кароче смотрите сами, исходник там же ъ вот она или с массивами,думаю это дело нужно делать с ними))
__________________
быстрее сюда |
|
|||||
|
Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
|
RANDOMIZE
(qBasic рулит!) |
|
|||||
|
а поподробнее?
__________________
быстрее сюда |
|
|||||
|
Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
|
это шутка была...
а что бы не повторялись - делай цикл-проверку. У меня сейчас времени нет, пример не смогу дать. |
|
|||||
|
a1 = random(b)+1;
c1 = random(b)+1; if (a1 == c1) { a1 = random(b); } если так, то можно сделать чтобы в паре не повторялиь, а мне нада чтобы все числа были разные, думаю больно большой код получится) если чисел 20 или 30они все равно повторяются)
__________________
быстрее сюда |
|
|||||
|
//init part(add to the first frame!)
max = 26;//number used = []; //main part number = random(max)+1; for(var some in used){ if(used[some] == number) { it_used = 1; break; } } if(it_used != 1){ trace(number); used.push(number); } it_used = null; должно работать, но не проверял....
__________________
Флэш - это искусство(читай издевательство) |
|
|||||
|
Мой вариант:
max=30; function order (a, b) { var name1 = random(max)+1; var name2 = random(max)+1; if (name1 < name2) { return -1; } else if (name1 > name2) { return 1; } else { return 0; } } r=new Array(); for (n=0; n<max; n++){ r[n]=n+1 }; r.sort(order); r.sort(order); r.sort(order); r.sort(order); r.sort(order); |
|
|||||
|
вобще говоря, мне часто приходилось сталкиваться с подобными задачами, поэтому я давно для себя написал универсальный класс.
Object.prototype.RND=function(obj) {
this._rnd=new Array();
this._obj=obj;
this.randomize=function() {
if(this._obj!=undefined&&this._obj.__proto__==Array.prototype) {
delete this._rnd;
this._rnd=new Array();
var len=this._obj.length;
this.length=len;
for(var i=0;i<len;i++) {
this._rnd[i]=this._obj[i];
}
}
}
this.random=function() {
var len=this._rnd.length;
this.length=len;
if(len!=0) {
var n=random(len);
var temp=this._rnd[len-1];
this._rnd[len-1]=this._rnd[n];
this._rnd[n]=temp;
return this._rnd.pop();
} else {
return null;
}
}
ASSetPropFlags(this,null,7);
this.randomize();
}
значит как работать, все просто: есть массив со значениями, которые необходимо случайно выбирать с условием уникальности выбора. притом что значения массива могут быть любого типа :) ну например: values=["string",2,3,6,7,"c",8]; далее создаем обьект: myRandom=RND(values); для случайного и уникального выбора значения: myVar=myRandom.random(); когда выбор будет исчерпан, функция будет возвращать null для восстановления набора значений: myRandom.randomize(); узнать сколько осталось "нетронутых" значений: myRandom.length пример: :) Последний раз редактировалось ish; 11.02.2002 в 08:30. |
|
|||||
|
звиняйте, в сорс вкралась ошибка :)
тут правильно Object.prototype.RNDGenerator=function(obj) {
this._rnd=new Array();
this._obj=obj;
this.randomize=function() {
if(this._obj!=undefined&&this._obj.__proto__==Array.prototype) {
delete this._rnd;
this._rnd=new Array();
var len=this._obj.length;
this.length=len;
for(var i=0;i<len;i++) {
this._rnd[i]=this._obj[i];
}
}
}
this.random=function() {
var len=this._rnd.length;
if(len!=0) {
var n=random(len);
var temp=this._rnd[len-1];
this._rnd[len-1]=this._rnd[n];
this._rnd[n]=temp;
var out=this._rnd.pop();
this.length=this._rnd.length;
return out;
} else {
return null;
}
}
ASSetPropFlags(this,null,7);
this.randomize();
}
Последний раз редактировалось ish; 11.02.2002 в 10:17. |
|
|||||
|
Хочу тоже поучаствовать
Класов правда не сподобил, но два кусочка положу Просто случайное число с проверкой чтоб подряд не шли. do { new=random (n); } while (new==old); old=new; А вот это интересный кусосочек - просто от сердца отрываю Создает псевдослучайный массив.ar=[]; for (i=0; i<20; ++i) { ar.splice(random (10),0,i); } trace (ar);
__________________
Без труда не выловишь и fish-ку из пруда! |
![]() |
Часовой пояс GMT +4, время: 02:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|