Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 15:56   #1
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
Вопрос повторы в Random

и как сделать, чтоб здесь не было повторов?
Код:
Random r;
r = new Random();
for (int i = 0; i < 10; i++)
            {
                v[i]=r.Next(10);
                textBox1.Text += v[i].ToString() + " ";
            }
Natok вне форума Ответить с цитированием
Старый 26.05.2009, 16:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну думаю что просто пройтись по всем элементам уже имеющимся и проверить на неравенство со сгенерированным, и если ни один не равен вносить, иначе сгенерировать еще.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2009, 16:04   #3
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Код:
procedure Shuffle(var aArray; aItemCount: Integer; aItemSize: Integer); 

{ after Julian M Bucknall } 

var 

Inx: Integer; 

RandInx: Integer; 

SwapItem: PByteArray; 

A: TByteArray absolute aArray; 

begin 

if (aItemCount > 1) then 

begin 

   GetMem(SwapItem, aItemSize); 

   try 

     for Inx := 0 to (aItemCount - 2) do 

     begin 

       RandInx := Random(aItemCount - Inx); 

       Move(A[Inx * aItemSize], SwapItem^, aItemSize); 

       Move(A[RandInx * aItemSize], A[Inx * aItemSize], aItemSize); 

       Move(SwapItem^, A[RandInx * aItemSize], aItemSize); 

     end; 

   finally 

     FreeMem(SwapItem, aItemSize); 

   end; 

end; 

end;
это в delphi
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 26.05.2009, 16:04   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так, например:
Код:
Random r; 
	r = new Random(); 
	int[] v = new int[10];
	int[] mas = new int[10];
	int m=0;
	bool fl;
	for (int i = 0; i < 10; i++) 
            { 
                do
                 {
                	fl = true;
                	v[i]=r.Next(10);
                	for(int j=0; j<m; j++)
                		if(v[i]==mas[j]) fl=false;
                } while(!fl);
                mas[m++] = v[i];
                				
                textBox1.Text += v[i].ToString() + " "; 
           	}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.05.2009, 17:41   #5
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
Радость

Cпасибо большое всем! Грустно, но Delphi не знаю...Но все равно спасибо)))

теперь по аналогии размещаю на поле начальное к-ство волков и зайцев случайным путем!
PHP код:
            int size;
            
size=int.Parse(textBox3.Text);
            
int[,] = new int[sizesize];
            for (
int i 0sizei++)
                for (
int j 0sizej++)
                    
m[i,j]=0;

            
int a1;//к-ство 1-иц-зайцев
            
a1 int.Parse(textBox1.Text);
            
bool fl1;
            
int l1p1;
            for(
int k=0k<a1k++)
            {
                do{
                    
fl1=true;

                    
l1 r.Next(size);
                    
p1 r.Next(size);
                    if (
m[l1,p1]!=0fl1=false;
                }
                while(!
fl1);
                
m[l1p1] = 1;

            }

            
int a2 8;//к-ство 2-ек или волков
            
a2 int.Parse(textBox2.Text);
            
bool fl2;
            
int l2p2;
            for (
int k 0a2k++)
            {
                do
                {
                    
fl2 true;

                    
l2 r.Next(size);
                    
p2 r.Next(size);
                    if (
m[l2p2] != 0fl2 false;
                }
                while (!
fl2);
                
m[l2p2] = 2;

            } 
Natok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
random в С++ Swool Общие вопросы C/C++ 21 18.02.2012 21:55
удалить повторы FAiver Общие вопросы Delphi 5 21.10.2010 20:45
Повторы в ListView Shouldercannon Общие вопросы Delphi 2 21.10.2010 13:52
Убрать повторы ShnapS БД в Delphi 4 15.05.2009 23:03
random Forrest Gamp Общие вопросы C/C++ 4 11.02.2008 09:46