Rastgele Sonsuz Basamaklı Sayı Oluşturma

<?php
class rastgeleUzunSayi{//sonsuz basamaklı rastgele sayı üretebilir
	function olustur($basamaksayisi){
		$sifirla=null;
		$sayi=null;	
		$rastgelesayi = 0;
		$basamak = 0;
		while($basamak < $basamaksayisi){
			$sayi .= rand(0,9);
			$basamak++;
		} 
		if(substr($sayi , -30,1) == 0){//0 ile başlamasın
			return rand(1,9).substr($sayi,1,29);
		}else{
			return $sayi;
		}
	}
}
$g=new rastgeleUzunSayi;
echo "<b>";
echo $sayi = $g->olustur(30);//30 basamaklı sayı üret
?>

Çıktısı

298580541031535769480338548338

 

Gelişmiş Rastgele Sayılar Üretme Sınıfı

<?php
	class Rast {
		protected $sonuc, $ciz, $mikro, $sn, $f, $m, $tam;
		public function gele($sayi2=100,$sayi1=0,$sayi=0, $mutlak=true, $ciz=false) {
			$sayi2++;
			$this->ciz = microtime();
			list($this->mikro, $this->sn) = explode(" ", $this->ciz);
			$this->ciz = ' - '.$this->ciz;
			$this->f = '';
			$this->m = 1;
			if ($sayi > 0) {$sayi2--; $this->f = '.'.$this->gele(pow(10, $sayi));}
			if ($ciz === false) { $this->ciz = '';}
			if ($mutlak === false) { $this->m = $this->gele(2) == 0 ? -1 : 1; }
			$this->mikro = pow($this->mikro, 2) + $this->mikro +41; // according sayi2 Euler's formula
			$this->sn = pow($this->sn, 2) + $this->sn +41;
			$this->tam = strlen($sayi2) +substr($this->mikro, 0, 2) +2;
			$this->sonuc = sprintf("%.{$this->tam}f", ($this->mikro/$this->sn));
			$this->sonuc = ((((substr($this->sonuc, (strlen($sayi2) > 3 ? (5+strlen($sayi2))*(-1) : -5)) % ($sayi2-$sayi1)) + $sayi1).$this->f)*$this->m).$this->ciz;
			return $this->sonuc;
		}
	}
	$rast = new Rast();
		echo $rast->gele(5);//0 ile 5 arası rastgele pozitif sayılar
		echo "<br>";
		echo $rast->gele(15, 4);//4 ile 15 arası rastgele pozitif sayılar
		echo "<br>";
		echo $rast->gele(15, 0, 3);//0 ile baslanyan ve virgülden sonra 3 haneli sayı
		echo "<br>";
		echo $rast->gele(15, 4, 3);//4 ile baslanyan ve virgülden sonra 3 haneli sayı
		echo "<br>";
		echo $rast->gele(15, 0, 0, false);//0
		echo "<br>";
		echo $rast->gele(15, 0, 3, false);//0
		echo "<br>";
		echo $rast->gele(15, 9, 0, false);//9 veya -9
		echo "<br>";
		echo $rast->gele(15, 9, 0, false, true);//9 veya -9
		echo "<br>";
		echo $rast->gele(15, 9, 0, true, true);//9 ile 15 arası sayı - mikrozaman ve zamandamgası
		echo "<br>";
		echo $rast->gele(15, 0, 3, false, true);//0
		echo "<br>";

?>

Çıktısı

0
15
0.405
4.856
0
0
-9
-9
13 - 0.70984500 1528384271
0