私はその中に24個の要素を持つ1次元配列を持っています。私はすべてをランダムな順序でループしたい。私は1から24までそれらをループする方法を知っていますが、すべての要素が選択されるまで、ランダムに選択し、次に別の方法などを選択する方法はありますか?配列のすべての要素をランダムな順序でループしますか?
私はVBのようなスクリプト言語(QAWizard)を使用していますので、アイデアやVBコードで十分でしょう。
私はその中に24個の要素を持つ1次元配列を持っています。私はすべてをランダムな順序でループしたい。私は1から24までそれらをループする方法を知っていますが、すべての要素が選択されるまで、ランダムに選択し、次に別の方法などを選択する方法はありますか?配列のすべての要素をランダムな順序でループしますか?
私はVBのようなスクリプト言語(QAWizard)を使用していますので、アイデアやVBコードで十分でしょう。
あなたは、LINQを使用することができます。
Dim randomOrder = From item In yourArray Order By Guid.NewGuid()
For Each item In randomOrder
Next
Guid
トリックは、このようなシャッフルアプローチを見て、コレクションを「ランダム化」するための最良の方法ではありません。https://stackoverflow.com/a/7513502/284240
あなたはLINQのを使用することができますOrderBy
とRandom.Next
は、ランダムにそれを注文します
Private Shared _rnd As New Random
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
Dim arr As Integer() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
For Each value In arr.OrderBy(Function(x) _rnd.Next())
Debug.WriteLine(value)
Next
End Sub
'Random'は' Guid.NewGuid'よりも良いかもしれませんが、OPはローカル変数を使わないことを忘れないでください。あなたの 'Shared'アプローチは、アプリケーションがマルチスレッド化し始めるまでは問題ありません。次に、[this](http://stackoverflow.com/a/19271062/284240);-)のようなものが必要です。 –
@TimSchmeiterさんの返信をありがとうございます。その部分を具体的に教えてください: "(Function(x)_rnd.next ())」? QA(品質保証)ウィザードは、そのような組み込み関数を持っていません。私はそれを自分で書く必要があります。あなたがそのことを手伝うことができたら、私はそれを感謝します。 –
私はあなたがシャッフルを探していると思います* *。無作為な順番でループすることは、一度しか出てこないことを保証することはできません(「QA」が何らかのクイズを意味する場合は必須です)。 – Plutonix
@Plutonix QA WizardのQAは品質保証の略です。それはソフトウェアをテストするための援助のようです。それは.Net言語のようではないので、私はOPアイデアやVBコードで十分だろうと確信していません。 – Blackwood
@Blackwood - クイズゲームがたくさんあります時々投稿される質問。文脈はあまりありません。 OP:それが事実なら、適切なシャッフルが良いかもしれません。偏りのない結果を文書化/保証することが容易になります。 – Plutonix