繁体   English   中英

如何从 Visual Basic 中的数组中选择一个随机元素

[英]How to choose a random element from an array in Visual Basic

我创建了一个整数数组,并想从中选择一个随机元素。 我怎么做?

YourArray(New Random().Next(0,YourArray.Length-1))

或者为了更清楚而分开:

Dim Rand as New Random()
Dim Index as Integer = Rand.Next(0, YourArray.Length - 1)

Dim SelectedValue = YourArray(Index)

0Len-1范围内生成一个随机整数,其中Len是数组的长度。 要生成随机整数,请使用Random类的实例。

DIM rand As New Random
DIM idx as rand.Next(0, Len)
REM Now you can pick an element idx from the array
REM to get a random element.
DIM res as myArray(index)

Rnd 可以得到[0,1),那么multiple你的arraylength,你可以得到[0,YourArrayLength)之间的数

Randomize
Int(array.length* Rnd)

Visual Basic 6.0

Dim A() as string
chose = Int(Rnd * UBound(A)) 

只想说接受的答案是不正确的。

这是正确的

Dim Rand as New Random()
Dim Index as Integer = Rand.Next(0, YourArray.Length)

Dim SelectedValue = YourArray(Index)

为什么?

因为最大值是独占的。 因此,例如,如果您不想在 3 个元素中进行选择,则最大值应该是 3,而不是 2。

    '
    ' Summary:
    '     Returns a non-negative random integer.
    '
    ' Returns:
    '     A 32-bit signed integer that is greater than or equal to 0 and less than System.Int32.MaxValue.
    Public Overridable Function [Next]() As Integer
    '
    ' Summary:
    '     Returns a random integer that is within a specified range.
    '
    ' Parameters:
    '   minValue:
    '     The inclusive lower bound of the random number returned.
    '
    '   maxValue:
    '     The **exclusive** upper bound of the random number returned. maxValue must be greater
    '     than or equal to minValue.
    '
    ' Returns:
    '     A 32-bit signed integer greater than or equal to minValue and **less than** maxValue;
    '     that is, the range of return values includes minValue but not maxValue. If minValue
    '     equals maxValue, minValue is returned.
    '
    ' Exceptions:
    '   T:System.ArgumentOutOfRangeException:
    '     minValue is greater than maxValue.

我也试过了。 我试图从 3 个元素中选择一个,并注意到只有前 2 个元素被选中。 永远不会选择第三个元素在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM