Я хочу ввести 16-битное число с несколькими установленными битами и вернуть число только с одним из установленных битов. Итак, введите 011 и случайным образом либо выведите 010, либо 001, либо введите 111 и получите либо 100, 010, либо 001. Контекст таков, что я пытаюсь позволить атаке случайным образом вызывать несколько статусных эффектов без необходимости делать для нее особые случаи, которые были бы раздражающими и повторяющимися.
Похоже, что это решение всегда выводит только 1, а это не то, что я хочу.
u_int16_t setRandomBit(u_int16_tnumber) {
int bit_to_set = randomRange(1, __builtin_popcount(number));// popcount is the amount of set bits
int counter = 0;
for (int i = 0; i < 16; i++) {
if ((number >> i) && 1) {// if the bit is set
counter -= 1;
if (counter != bit_to_set) {
number = number && ~(1
Подробнее здесь: https://stackoverflow.com/questions/798 ... random-one
Как замаскировать каждый бит числа, кроме одного случайного? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1765987187
Anonymous
Я хочу ввести 16-битное число с несколькими установленными битами и вернуть число только с одним из установленных битов. Итак, введите 011 и случайным образом либо выведите 010, либо 001, либо введите 111 и получите либо 100, 010, либо 001. Контекст таков, что я пытаюсь позволить атаке случайным образом вызывать несколько статусных эффектов без необходимости делать для нее особые случаи, которые были бы раздражающими и повторяющимися.
Похоже, что это решение всегда выводит только 1, а это не то, что я хочу.
u_int16_t setRandomBit(u_int16_tnumber) {
int bit_to_set = randomRange(1, __builtin_popcount(number));// popcount is the amount of set bits
int counter = 0;
for (int i = 0; i < 16; i++) {
if ((number >> i) && 1) {// if the bit is set
counter -= 1;
if (counter != bit_to_set) {
number = number && ~(1
Подробнее здесь: [url]https://stackoverflow.com/questions/79848994/how-do-i-mask-out-every-bit-of-a-number-but-a-single-random-one[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия