ビット位置に基づいて値を選択する方法はありますか。問題のステートメントは次のとおりです:- 16 ビット位置の場合、任意のビットを設定できます。たとえば、1,4,6,7,11,13 ビットを設定すると、マスクは次のようになります:-
Bit Positons 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0
ここで、このビット マスクに基づいて値をランダムに選択する必要があります。1 ビットのみが設定されているため、可能な値は次のようになります。
4 :0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 を選択する場合
For Selecting 7: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
しかし、この値をランダムに選択する必要があるため、このようにすることを考えました
1) ビット マスクに基づいて配列を作成します。16 ビットの場合、配列には 16 個の一意の値が含まれます。
2) 次に、配列の位置に対して rand 操作を実行して、配列のインデックスを取得します。
3) その配列インデックスの値を使用します。
それを行うより良い方法はありますか?