2016-07-18 4 views
0

코딩에 익숙하지 않은 나는 이것을 단단히 붙들고있다.Visual Basic, 코딩이 새로 추가되었습니다. 100 개의 정수 목록을 만들 필요가있다. 결과는 70 개가된다.

나는이 목록을 유지하기 위해 노력하고있어

Dim integerStable As New List(Of Integer)() 

integerStable.Add(0) 
integerStable.Add(1) 
integerStable.Add(2) 
'through to integerStable.Add(99) 

로 Visual Basic에서 목록을 만든 (그것은 한 모든 숫자는 일반적으로 목록에 남아으로 단행 할 수있다)과 2를 만들 그 셔플의 결과가 70 개 밖에없는 목록.

나는 그 목록을 필요로하므로 나중에 나에게 몇 가지 작업을 수행하도록 요청할 수있다.

아무에게도 어떻게 할 수 있습니까? 코딩에 익숙하지 않다는 것을 기억하십시오. 그러나 따라하기 위해 노력할 것입니다. 적어도 당신에게 입력을 많이 저장해야

Dim integerStable As New List(Of Integer) 
For i = 1 To 100 
    integerStable.Add(i) 
Next 

! :

답변

1

다음과 같이 될 것이다 목록을 생성 할 수있는 가장 효율적인 방법 중 하나

당신은 또한 할 수있는 다음과 같은 : 후자의 예는 101 개 항목을 줄 것이다하지만 정수는 처음에 당신은 또한 것을 기억할 필요가 0 **

로 설정되어

Dim integerStable As New List(Of Integer) 
Dim i As Integer 
While i <= 100 
    integerStable.Add(i) 
    i += 1 
End While 

** 참고 목록은 0부터 1까지 '색인'됩니다. NOT 1은 항목을 조작 할 때 기억해야 할 중요한 사항입니다.

+0

는 OMG LOL, 당신은 모두를 쓰는 데 걸린 시간 (물론 실제로 수도) 아무 생각이 없다 목록을 만들고 4 행 목록으로 바꿉니다. D 어떻게 목록을 작성하면 새로운 목록을 만들 수 있습니까? 그것에 관한 문서를 찾을 수 없습니다. 별도의 목록이 필요하므로 원본 샘플 목록을 손상시키지 않고 정보를 가져온 후 나중에 반복적으로 삭제하고 다시 만들 수 있습니다. 앞으로 다른 종속성을 갖게 될 것입니다. – envisage

+0

당신이하려고하는 것이 정확히 무엇인지, 그 배후에있는 추론을 조금 더 분명하게 설명해 주시겠습니까? 그것은 당신을 올바른 방향으로 가리키는 것을 훨씬 쉽게합니다. –

+0

절대적으로. 내가보기에 의사 코드 주석을 달아 주거나 직접 볼 시간이 있으면 공유 프로젝트에 초대 할 수 있습니다. 그것은 디자인에 대한 나의 지식을 보여주기위한 슬롯 머신 프로토 타입이다. (그러나 나는 그것을위한 코드가 아직 없다. 나는 그것에 대해 노력하고있다.) 좋아, 여기있다. 들어오는 녹슨 의사 코드 주석. ''스핀 !!! '버튼을 클릭하십시오. '모든 버튼을 비활성화하십시오. '목록'noPlayStartSymbols "(시작 위치 슬롯에 대한 PNG 년대의 목록을 호출합니다. '< '의 5 반복 목록"100integers "및 셔플, 첫째 70 개 결과 – envisage

0

훨씬 간단 할 수 있습니다.

Private Shared PRNG As New Random 
' 100 numbers starting at zero, in random order 
Private listOnum As List(Of Integer) = Enumerable.Range(0, 100).OrderBy(Function(x) PRNG.Next).ToList 
' list of 70 numbers from list of 100 
Private list70 As List(Of Integer) = listOnum.Take(70).ToList 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    'did it work? 
    Dim ct As Integer = 1 
    For Each n As Integer In list70 
     Debug.WriteLine("{0}. {1,3}", ct, n) 
     ct += 1 
    Next 
End Sub 

Enumerable.Range에는 두 개의 인수가 사용됩니다. 첫 번째 숫자는 시작 숫자이고 두 번째 숫자는 숫자이므로 예제에서는 0에서 시작하여 99, 100 개의 항목으로 끝나는 목록을 만들었습니다. OrderBy는 그 목록을 임의의 숫자로 정렬했습니다.

list70은 listOnum에서 처음 70 개 항목을 가져와 생성됩니다.

랜덤, PRNG는 한 번만 초기화되는 임의의 랜덤 하나만 있도록 그렇게 만들어집니다. 무작위의 잘못된 초기화와 관련된 많은 문제를 발견 할 수 있습니다.

편집 : 약간 다른 접근 방식. p가 나는 적어도 많이 붙여 복사 않았지만 예전의 100 줄을 제거 갈 것입니다 :

Private Shared PRNG As New Random 
' 100 numbers starting at zero 
Private listOnum As List(Of Integer) = Enumerable.Range(0, 100).ToList 
' list of 70 random numbers from list of 100 
Private list70 As List(Of Integer) = listOnum.OrderBy(Function(x) PRNG.Next).Take(70).ToList 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    'did it work? 
    Dim ct As Integer = 1 
    For Each n As Integer In list70 
     Debug.WriteLine("{0}. {1,3}", ct, n) 
     ct += 1 
    Next 
    'recreate list of 70 
    list70 = listOnum.OrderBy(Function(x) PRNG.Next).Take(70).ToList 
End Sub 
+0

오, 쓰레기가 내 마음이 녹아 버렸습니다. 이상하게도 나에게 맞는 것처럼 보이지만 나는 그렇지 않습니다. 전혀 이해하지 못한다. :-) 나는 저장하고 내 문서를 편집하고 실제 상황을 살펴볼 것이다. 두 분 모두에게 도움을 주셔서 감사합니다. – envisage

+0

@envisage - 약간의 설명을 덧붙여서 마음이 녹아 들기를 바랍니다.) – dbasnett

+0

@dbasnett 흥미로운 접근 방법입니다. 하지만 얼마나 무작위입니까? 방금 Linqpad에서 (정말 빠른 테스트 환경으로 훌륭함) 이걸 가지고 놀았고 같은 번호가 같은 순서로 올라가는 것을 보았습니다. –