JavaScript Изменить тип элемента [закрыто]

Полностью случайное действительное число с плавающей точкой генерируется следующим образом: случайный знак, случайный показатель и случайная мантисса. Ниже приведен пример генерации случайных чисел из 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

1
задан calm 23 February 2019 в 19:57
поделиться

1 ответ

Попробуйте это

$(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">

0
ответ дан ellipsis 23 February 2019 в 19:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: