Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Рассортировать числа случайным образом
     
    
Добавлено: 14.03.05 14:01
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 serrin | Web-сайт: on upgrade | ICQ: 163955885 
      
       
  
Есть например числа 1,2,3,4,5(причём количество чисел меняется).Как их рассортировать случайным образом?Заранее извиняюсь,возможно такой вопрос уже был,но поиск в этом форуме постоянно глючит,ошибка на ошибке,если есть тема подобная киньте просто ссылку
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 8
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 CyRax 
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 204447456 
Вопросов: 180
Ответов: 4229
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  14.03.05 16:00
       
    
       
  
 
    
Dim RandomNumber, Value
Randomize Timer
RandomNumber=INT(Value*RND)
MsgBox RandomNumber
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 Sur
![]()
![]()
![]()
ICQ: 1249088 
Вопросов: 10
Ответов: 304
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  14.03.05 16:25
       
    
       
  
Положи свои цифирки в массив, бери по две случайно (спасибо Cyrax  
    
 и меняй их значения местами. Делать это несколько раз или случайно:
10 + INT(50*RND)
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 Morpheus
![]()
![]()
![]()
![]()
Вопросов: 224
Ответов: 3777
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  14.03.05 16:48
       
    
       
  
можно по простому создать др. массив и заполнять его из первого в случайном порядке. но это будет долше + надобержать логический массив, в котором содержится инфа о выбранных элементах
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 cresta
![]()
![]()
Вопросов: 117
Ответов: 1538
      
 Профиль |  | #4
       
Добавлено:  14.03.05 16:51
       
    
       
  
Dim Arr(0 To 10) As Long
 
    
Private Sub Комманда1_Click()
    
im i As Long
    For i = 0 To 10   'массив чисел, идущих по порядку
        Arr(i) = i
    Next i
    Перемешать
End Sub
Sub Перемешать()
    
im i As Long, k As Long, OutArr(0 To 10) As Long
    For i = 0 To 10
        OutArr(i) = -1
    Next i
    Randomize Timer
    For i = 0 To 10
        k = Rnd * 10
        
o While OutArr(k) <> -1
            k = k + 1
            If k > 10 Then k = 0
        Loop
        OutArr(k) = Arr(i)
    Next i
    For i = 0 To 10
        
ebug.Print OutArr(i)
    Next i
End Sub
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
 serrin
![]()
ICQ: 163955885 
Вопросов: 7
Ответов: 12
      
 Web-сайт:  
 Профиль |  | #5
      
Добавлено:  14.03.05 23:06
       
    
       
  
Ребят,спасибо,но задача несколько сложнее.массив таким образом
 
    
Dim A(X) as long,где X постоянно меняющееся количество циферок не задашь)
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #6
      
Добавлено:  14.03.05 23:14
       
    
       
  
Ну значит массив Dim Arr() As Long
 
    
Далее как поменяется эта самая циферка, то Redim Arr(X)
И в циклах сделать следует так:
 For i = 0 To UBound(Arr)
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа:
 serrin
![]()
ICQ: 163955885 
Вопросов: 7
Ответов: 12
      
 Web-сайт:  
 Профиль |  | #7
      
Добавлено:  14.03.05 23:16
       
    
       
  
Тормознулся вот на чём...
 
    
    
im X As Long
    
im J As Integer
    
im Count As Integer
    
    
im ExistInArray As Boolean
    
    Count = 5
    For J = 0 To Count
        
o
            ExistInArray = False
            Randomize Timer
            X = CLng(Rnd * Count)
            For I = 0 To List1.ListCount - 1
                If Val(List1.List(I)) = X Then ExistInArray = True: Exit For
            Next I
            If ExistInArray = False Then Exit Do
        Loop
        List1.AddItem X
    Next J
НО!эта падла почемуто работает только в событии form_load,а мне надо штоб несколько раз...когда же её ставишь отдельным subом она,тварь вешает...Собсно готов биться башкой об стену,вот и спросил ваших идей)
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 serrin
![]()
ICQ: 163955885 
Вопросов: 7
Ответов: 12
      
 Web-сайт:  
 Профиль |  | #8
      
Добавлено:  14.03.05 23:47
       
    
       
  
 
    
Всем огромное спасибо,отдельно sne...не знал про Redim Arr(X).Подтверждается старое правило-прежде чем спросить учи матчасть)