Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рандом
 
 автор: Fox74   (22.06.2015 в 00:49)   письмо автору
 
 

Помогите дороботать код. Суть заключается в ограничение вывода знаков после точки, не более 2 знаков.
<?php
$random = 0.0 + 20.0 * mt_rand() / mt_getrandmax();
echo $random.'<br>';
?>


И есть ещё код где можно устанивить желаемое количество после точки но целые устанавливаются в ручную и не генерируются, а нужно чтобы целые тоже генерировались. Как сотворить чудо ума не приложу.
<?php
$zn = 2; // количество знаков после запятой
$cn = mt_rand(2,$zn-1);
$nu = array_fill(0,$cn,'0');
for($i=0; $i<$zn-$cn; $i++) $nu[] = mt_rand(0,9);
echo $nu = '0.'.implode('',$nu);
echo '<br />';
echo $nu+0;
?>

  Ответить  
 
 автор: man1   (22.06.2015 в 04:03)   письмо автору
 
   для: Fox74   (22.06.2015 в 00:49)
 

http://php.net/number_format

  Ответить  
 
 автор: Deed   (22.06.2015 в 08:59)   письмо автору
 
   для: Fox74   (22.06.2015 в 00:49)
 


<?
$int=5; //кол-во целых
$flt=2; //дробных

$a='';
$b='';
for($i=0;$i<$int;$i++){
   $a.=rand(0,9);
}
for($i=0;$i<$flt;$i++){
   $b.=rand(1,9);
}
$result=(float)($a.'.'.$b);
echo $result;
?>

  Ответить  
 
 автор: Igorek   (22.06.2015 в 09:28)   письмо автору
 
   для: Fox74   (22.06.2015 в 00:49)
 

как вариант:
<?php

$int = 10;
$flt = 5;
$all = $int + $flt;

$res = sprintf("%0.{$flt}f", mt_rand(pow(10, $all-1), pow(10, $all) -1) / pow(10, $flt));

var_dump($res);

  Ответить  
 
 автор: indexer   (22.06.2015 в 21:35)   письмо автору
 
   для: Fox74   (22.06.2015 в 00:49)
 


<?php
$zn=2;
$random = 0.0 + 20.0 * mt_rand() / mt_getrandmax();
echo number_format($random,$zn,'.','')."<br>";


или в виде функции видимо не один раз будет применяться

<?php
function generate($zn){
    $random = 0.0 + 20.0 * mt_rand() / mt_getrandmax();
    return number_format($random,$zn,'.','');
}



$ololo0=2; //знаков после точки
$ololo1=3;
$ololo2=4;

echo generate($ololo0); echo "<br>"; 
echo generate($ololo1); echo "<br>"; 
echo generate($ololo2); echo "<br>"; 

  Ответить  
 
 автор: Fox74   (22.06.2015 в 21:57)   письмо автору
 
   для: indexer   (22.06.2015 в 21:35)
 

Спасибо ребят за помощь и примеры. indexer Вам особое спасибо.

  Ответить