2015-12-30 121 views
0

下面你会看到我有什么制作随机数组。我需要从最大到最小的顺序将项目排序,然后根据用户选择的类别将它们放入文本框中。这是一个DnD 4e能力发生器。我需要能够把最高的能力分数放到最适合该类的领域。订购阵列从最大到最小的问题

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    'Dim randstr As New Random 

    'Dim a As Integer 
    'Dim b As Integer 
    'Dim c As Integer 
    'Dim d As Integer 
    'Dim h As Integer 
    'Dim f As Integer 


    'a = randstr.Next(3, 18) 
    'b = randstr.Next(3, 18) 
    'c = randstr.Next(3, 18) 
    'd = randstr.Next(3, 18) 
    'h = randstr.Next(3, 18) 
    'f = randstr.Next(3, 18) 

    Static randomNumberGenerator As New System.Random 


    Dim randomNumbers(6) As Integer ' Create the array 

    Dim smallestNumber As Integer = 3 ' Set the lower bounds 

    Dim largestNumber As Integer = 18 ' Set the upper bounds 



    For i = 0 To 6 ' loop through each element in the array 

     randomNumbers(i) = randomNumberGenerator.Next(smallestNumber, largestNumber) 

    Next 

    If CbClass.SelectedItem = "Fighter" Then 

    End If 
End Sub 
+2

你说你有一个问题排序数字,但是问题是什么?你对排序例程有什么代码,以及你想得到什么样的行为?这需要编辑到你的问题。看看这里..干杯... [问] –

+0

非常非常不清楚你在问什么。预期的结果是什么?你会得到什么?它怎么错了?参见[问] – Plutonix

+0

我没有排序部分。我看了一些其他的代码,但它没有看到gor。我需要做的是将数组从高到低排序,然后能够抓取我需要的数组的每个部分,然后将它们输出到文本框中(如果它们满足要求的话)。就像是有人制造战斗机一样,最高的属性需要力量。如果这是有道理的。 – Morrg

回答

0

这将你的阵列最大到最小排序 - 此代码后..

For i = 0 To 6 ' loop through each element in the array 

    randomNumbers(i) = randomNumberGenerator.Next(smallestNumber, largestNumber) 

Next 

添加

Array.Sort(randomNumbers) 
Array.Reverse(randomNumbers) 

要将它们添加到文本框的

TextBox1.Text = randomNumbers(0).ToString 
TextBox2.Text = randomNumbers(1).ToString 
TextBox3.Text = randomNumbers(2).ToString 
TextBox4.Text = randomNumbers(3).ToString 
TextBox5.Text = randomNumbers(4).ToString 
TextBox6.Text = randomNumbers(5).ToString 

记忆当然要改名字了以上的文本框,无论你被称为。

要设置统计信息的字符,你可能想是这样的

If CbClass.SelectedItem = "Fighter" Then 
    Strength = randomNumbers(0) 
    Aglity = randomNumbers(1) 
    Health = randomNumbers(2) 
    Intellect = randomNumbers(3) 
End If 

等。

+0

Ty sir就是我正在寻找的东西。 – Morrg

0

这会为你生成并订购你的数字最简单的方法:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

    Static randomNumberGenerator As New System.Random() 

    Dim smallestNumber As Integer = 3 ' Set the lower bounds 
    Dim largestNumber As Integer = 18 ' Set the upper bounds 
    Dim randomNumbers() As Integer = _ 
     Enumerable _ 
      .Range(0, 6) _ 
      .Select(Function (x) randomNumberGenerator.Next(smallestNumber, largestNumber + 1)) _ 
      .OrderByDescending(Function (x) x) _ 
      .ToArray() 

    ' Rest of your code here 

End Sub 

千万记住,调用randomNumberGenerator.Next(smallestNumber, largestNumber + 1)+ 1是作为第二个参数的这一号召重要的是独家上限。

当你运行该代码randomNumbers数组将包含这样的事情:

randomNumbers

然后,您可以只分配值一样Dim x = randomNumbers(0)