|
|
|
| Может - кто подскажет?
Спасибо. | |
|
|
|
|
|
|
|
для: coloboc66
(02.03.2012 в 10:25)
| |
function getrandom() {
var min_random = 1;
var max_random = 9;
max_random++;
var range = max_random - min_random;
var n=Math.floor(Math.random()*range) + min_random;
return n;
}
|
| |
|
|
|
|
|
|
|
для: elenaki
(02.03.2012 в 11:00)
| | Спавсибо, Лена! Для целых чисел скрипт работает хорошо, а вот для чисел с плавающей точкой - некорректно, часто генерирует число больше заданного максимального. Для работы с такими числами я этот скрипт немного переделал и получаю указанную проблему:
function getrandom() {
var min_random = document.getElementById("gorndtbfrom").value * 1;
var max_random = document.getElementById("gorndtbto").value * 1;
max_random++;
var range = max_random - min_random;
var n=Math.random()*range + min_random;
n=n.toFixed(2);
document.getElementById("gorndlbl").innerHTML =n;
//return n;
}
|
| |
|
|
|
|
|
|
|
для: coloboc66
(02.03.2012 в 11:33)
| | а где проблема-то?
<script>
function getrandom() {
var min_random = 1.1; //document.getElementById("gorndtbfrom").value * 1;
var max_random = 5.5;//document.getElementById("gorndtbto").value * 1;
max_random++;
var range = max_random - min_random;
var n=Math.random()*range + min_random;
n=n.toFixed(2);
//document.getElementById("gorndlbl").innerHTML =n;
return n;
}
document.write(getrandom())
</script>
|
больше 5,5 не получаю... | |
|
|
|
|
|
|
|
для: elenaki
(02.03.2012 в 11:57)
| | Мой комп тоже выдаёт больше чем 5,5.
Может потому, что max_random++ прибавляет единичку, а при таком примере
var min_random = 1.1
var max_random = 5.5
надо прибавлять не единичку, а 0.1 или даже меньше? | |
|
|
|
|
|
|
|
для: Yuriev
(02.03.2012 в 14:25)
| | Может от браузера зависит? У меня ИЕ8. | |
|
|
|
|
|
|
|
для: elenaki
(02.03.2012 в 11:57)
| | Непонятно, зачем увеличивать на единицу?
Math.random () генерирует псевдослучайные числа от 0 до 1 включительно (текст из документации - "The pseudorandom number generated is between 0 and 1 inclusive")
Поэтому всё просто:
var MyRnd = new Function ('Ot', 'Do', 'Posle_zapjatoy', 'return (Ot + Math.random () * (Do - Ot)).toFixed (Posle_zapjatoy)');
alert (MyRnd (1.2345, 6.7890, 4));
|
Для проверки подставьте крайние значения - 0 и 1.
И проверьте:
//проверяем на 0 *
var MyRnd_0 = new Function ('Ot', 'Do', 'Posle_zapjatoy', 'return (Ot + 0 * (Do - Ot)).toFixed (Posle_zapjatoy)');
alert (MyRnd_0 (1.2345, 6.7890, 4) + ' == 1.2345');
//проверяем на 1 *
var MyRnd_1 = new Function ('Ot', 'Do', 'Posle_zapjatoy', 'return (Ot + 1 * (Do - Ot)).toFixed (Posle_zapjatoy)');
alert (MyRnd_1 (1.2345, 6.7890, 4) + ' == 6.7890');
|
| |
|
|
|
|
|
|
|
для: ЯСА
(02.03.2012 в 14:57)
| | Действительно: закомментировал в ленином скрипте увеличение на единицу и вроде всё корректно заработало. | |
|
|
|
|
|
|
|
для: ЯСА
(02.03.2012 в 14:57)
| | не знаю. так было, я ничего не меняла, т.к. меня все устраивало. а зачем менять то, что работает? | |
|
|
|