2

指定された文字列のリストからランダムな文字列を選択するにはどうすればよいですか? 例:

List1: banana, apple, pineapple, mango, dragon-fruit
List2: 10.2.0.212, 10.4.0.221, 10.2.0.223

randomize(List1) = somevarのような関数を呼び出すと、その特定のリストから任意の文字列が取得されます。somevarの結果は完全にランダムになります。どうすればそれができますか?どうもありがとうございました :)

4

5 に答える 5

8

使用するRandom

Dim rnd = new Random()
Dim randomFruit = List1(rnd.Next(0, List1.Count))

このコードをループで実行する場合は、ランダム インスタンスを再利用する必要があることに注意してください。そうしないと、 random が現在のタイムスタンプで初期化されるため、値が繰り返されます。

したがって、これは機能します:

Dim rnd = new Random()
For i As Int32 = 1 To 10
    Dim randomFruit = List1(rnd.Next(0, List1.Count))
    Console.WriteLine(randomFruit)
Next

常に同じランダム インスタンスが使用されるためです。

しかし、これはうまくいきません:

For i As Int32 = 1 To 10
    Dim rnd = new Random()
    Dim randomFruit = List1(rnd.Next(0, List1.Count))
    Console.WriteLine(randomFruit)
Next
于 2013-02-25T14:54:54.743 に答える
2

ListString作成します。
乱数ジェネレーターを作成します。Random クラス
乱数ジェネレーターのNextInt()メソッドをList.Count上限として呼び出します。
戻るList[NextInt(List.count)]
仕事完了:)

于 2013-02-25T14:55:01.270 に答える
1

1 からリストのサイズまでの乱数を生成し、それをインデックスとして使用しますか?

于 2013-02-25T14:55:25.923 に答える
1

これを試して:

Public Function randomize(ByVal lst As ICollection) As Object
    Dim rdm As New Random()
    Dim auxLst As New List(Of Object)(lst)
    Return auxLst(rdm.Next(0, lst.Count))
End Function

または単に文字列リストの場合:

Public Function randomize(ByVal lst As ICollection(Of String)) As String
    Dim rdm As New Random()
    Dim auxLst As New List(Of String)(lst)
    Return auxLst(rdm.Next(0, lst.Count))
End Function
于 2013-02-25T15:00:33.457 に答える