Полностью случайное действительное число с плавающей точкой генерируется следующим образом: случайный знак, случайный показатель и случайная мантисса. Ниже приведен пример генерации случайных чисел из 0..MAXFLOAT с равномерным распределением:
static float frand(){
float f;
UINT32 *fi = (UINT32*)&f;
*fi = 0;
const int minBitsRandGives = (1<<15); // RAND_MAX is at least (1<<15)
UINT32 randExp = (rand()%254)+1; // Exponents are in range of [1..254]
UINT32 randMantissa = ((rand() % minBitsRandGives) << 8) | (rand()%256);
*fi = randMantissa | (randExp<<23); // Build a float with random exponent and random mantissa
return f;
}
Важное примечание: RAND_MAX по умолчанию равно 2 ^ 16 (в 32 битовых системах), поэтому rand () может генерировать не более 15 случайных бит. Поскольку с плавающей запятой имеется всего 32 бита, мы должны активировать rand () не менее 3 раз для генерации случайных 32 бит. Я использовал 8 бит rand () для генерации Exponent и еще 2 вызова rand () для генерации 23 бит мантиссы.
Общая ошибка, которой следует избегать: если вы используете (float)rand()/MAX_RAND
для получения плавающей запятой в range [0..1], вы все равно получите случайные числа в равномерном распределении, но с низкой точностью. Например, ваш случайный генератор может генерировать 0,00001 и 0,00002, но не может генерировать 0,000017. Такое случайное число в 256 раз меньше, чем фактическое представление с плавающей запятой.
Оптимизация. Моя функция не оптимизирована для скорости. Вы можете улучшить его, заменив разделение «%» на побитовые логические операции. Например, вместо %256
используйте &0xFF
Попробуйте это
$(document).ready(function() {
$('button').click(function() {
$("body").before("input");
});
$("input").keyup(function(e) {
if (e.keyCode == 13)
$(this).attr("type", "button");
$(this).val('button')
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>add tag</button>
<input type="text" name="" placeholder="tag"><button>add tag</button>
<input type="text" name="" placeholder="tag"><button>add tag</button>
<input type="text" name="" placeholder="tag"><button>add tag</button>
<input type="text" name="" placeholder="tag"><button>add tag</button>
<input type="text" name="" placeholder="tag"><button>add tag</button>
<input type="text" name="" placeholder="tag">