[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Random дробных чисел
rslab
В общем, не нашёл сопутствующей темы, поэтому спрошу здесь. Палками прошу не бить, не материться и не кусаться.
Стоит задача - генерировать дробное число, с 16-17 символами после нуля.
Пробовал что-то типо такого.
<?php
rand(80000000000001, 99999999999999999);
$myrand=0.0000001+$rand;
echo $myrand;
?>

Но, ответ он мне возвращает вот такой в любом случае: 1.0Е-7.
Уже голову сломал. так понять и не смог, что к чему.
Спасайте.
GET
$myrand='0.0000001'.$rand;
? :)

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
или можно еще попробывать:


rand(80000000000001, 99999999999999999);
$myrand=round(0.0000001+$rand,16);
echo $myrand;


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Valick
$zn = 16; // количество знаков после запятой
$cn = mt_rand(1,$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;

с циклом проще :)

_____________
Стимулятор ~yoomoney - 41001303250491
GET
$time_pi=time()*pi();
$result=round($time_pi/(rand(1,1000)*$time_pi),16);


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Valick
ABC, у тебя 1..2 нуля после точки и еще вот так 0.04, 0.0625
попробуй запусти мой и свой код и покликай


_____________
Стимулятор ~yoomoney - 41001303250491
GET
Цитата
еще вот так 0.04, 0.0625


не может быть из-за pi()

Цитата
у тебя 1..2 нуля после точки

ну и что и не всегда

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Подправил:

$time_pi=time()*pi();
$result=round($time_pi/($time_pi+rand(100000000,1000000000)),16)-0.1*(rand(1,8));
echo $result;


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
v2

$time_pi=time()*pi();
$r=rand(1,8);
$result=round($time_pi/($time_pi+100000000*$r),16)-0.1*$r;



_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
rslab
Цитата (Valick @ 1.02.2014 - 16:00)
$zn = 16; // количество знаков после запятой
$cn = mt_rand(1,$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;

с циклом проще :)

Спасибо. То, что было нужно:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.