キーセットからランダムな文字列を取得する必要がある問題に取り組んでいます。ここで誰かが私に指示を与えることができるかどうか疑問に思っています。私はそれにかなり迷っています。文字列ではなく int を使用している場合、かなりの数の方法を見つけました。たとえば、州とその首都についてユーザーに質問し、質問のためにキーセットからランダムなキーを引き出したいとします。セットは次のとおりです。
Set<String> states = stateCapitals.keySet();
Set
ランダム インデックス付けに最適なデータ構造ではありません。
に変換しList
、乱数発生器を使用して を選択することをお勧めしますindex
。本当に にとどまる必要がある場合はSet
、ランダム インデックスを生成してn
を反復処理し、Set
で停止できnth element
ます。複数の要素を選択する場合、 を使用する利点はありませんList
。どれでもiterable
いいです。
重要なアイデアは、選択確率を動的に調整して、m (out of sizeof(Set)) を選択できるようにすることです: の最も簡単な例ではm=1
、 の確率で最初の要素を1/N
選択し、選択しなかった場合は、2nd element
確率で選択します1/(N-1)
..andすぐ。
条件付き確率を使用して、すべての要素が公正な確率で選択されることを示します1/N
。
ArrayList<States> statesList = new ArrayList<>( states );
State x = statesList.get( (int)(statesList.size() * Math.random()) );
上記のコードは必要なものを取得しますが、リストが非常に大きい場合は非効率になる可能性があります。
このコードを試してください
onPress: function () {
debugger;
var textArray = ['Pritesh', 'Nimesh', 'Harshil', 'Ravi', 'Amit', 'Brijesh'];
var randomNumber = Math.floor(Math.random() * textArray.length);
for (var i = 0; i < textArray.length; i++) {
if (i === randomNumber) {
console.log(textArray[i]);
}
}