Php sözde rasgele sayılar

2 Cevap php

Ben rastgele bir sayısına bağlı olarak farklı bir sırayla öğeleri çıktılar bir işlevi var. etrafında başka bir yol olacak \ zaman örnek 1/2 Popeye ve onun listesi ve Taco Bell ve logosu # 1 olacak # 2 buçuk zaman olacaktır.

Sorunun bir kullanıcı reloads veya arka sayfasına geldiğinde, yeniden sipariş-randomize olmasıdır. $ Range burada db öğelerin sayısı, bu yüzden 1 ve $ aralığında rastgele bir sayı kullanıyor.

  $random = mt_rand(1,$range);
  for ($i = 0 ; $i < count($variants); $i++) {
    $random -= $variants[$i]['weight'];
    if ($random <= 0) {
      $chosenoffers[$tag] = $variants[$i];
      break;
    }
  }

Ben oturumun başında gitti ve bu seti:

if (!isset($_SESSION['rannum'])){
    $_SESSION['rannum']=rand(1,100);
    }

Ben oturum boyunca bir tohum olarak aynı 1-100 rasgele sayı kullanılan sözde rastgele jeneratör çeşit ile fonksiyonunda mt_rand yerini alabilecek fikri ile. Bu şekilde ben zaten yazılmış tüm kodu yeniden yazmak zorunda kalmazsınız. Ben yanlış ağaca havlıyor ya da bu iyi bir fikir olduğunu muyum?

2 Cevap

Ne iş için olmalıdır:

<?php
srand(1);
echo rand();
// 1804289383
srand(1);
echo rand();
// 1804289383
?>

ya da ilgili

<?php
mt_srand(1);
echo mt_rand(1, 100);
//58
mt_srand(1);
echo mt_rand(1, 100);
//58
?>

ve dediğin gibi oturumunda tohum saveing

Sorusunu yanıtlayan: Duruma göre değişir. Bu * bir yaklaşımdır.

Ama kontrol: http://www.php.net/manual/en/function.mt-srand.php. PHP mt_rand bir PRNG (zaten) ve bir tohum işlevi vardır bir Mersenne Twister vardır.

Destek kaynağı değiştirirse * Ancak, yine de yanlış var. Oops :-/