PHP eşit DEĞİLDİR iki sayı üretmek

7 Cevap php

PHP eşit DEĞİLDİR iki sayı üretmek gerekiyor.

Ben $random1 = (rand()%9); 0-9 arasında rastgele bir sayı üretmek için kullanmak olduğunu biliyorum. Bu ben tahmin şey eklemek gerekir.

Teşekkürler!

7 Cevap

$random1 = (rand() % 10)
$random2 = $random1 + (rand()%9)+1

Bu şekilde, (en az 1 $ random1 eklenecek gibi) eşit asla

Her iki sayı 0-9 olması durumunda, sadece son mod-operasyon yapmak zorunda:

$random1 = (rand() % 10)
$random2 = ($random1 + (rand()%9)+1 ) %10

Sana rand()%9 dahil 8 aracılığıyla size aralığında 0 bir sayı vermek göreceksiniz düşünüyorum. Eğer 0 ile 9 dahil istiyorsanız, kullanmanız gereken rand()%10. Ben ne istediğini varsaymak gidiyorum ama 8 0 ile size really amaçlanan neydi eğer kolayca cevabı ayarlamak olabilir.

Eğer bu aralıkta iki numara istiyorsanız, en kolay yolu bu aralıkta bir o aralıkta bir az başka oluşturmak ve aynı ya da daha büyük ise, bunu artırmak üretmektir.

Bu bunu yapmak için matematiksel bir yoldur, ve o (rand() ne olursa olsun için always iki çağrıları) deterministik bulunuyor. Olası olsa da, gerçek bir rasgele sayı üreteci (bu muhtemelen bir sorun olmayacak şekilde bir doğrusal jeneratör kullanarak olasıdır) ilmek çözümler akılsızca yapacak tüm özdeş bir sayı dizesi üretmek olabilir.

İlk denemede, sen (10 numara, 0 ile 9) seçmek için tam bir yelpazesi var. Saniye Eğer dizi eksi zaten seçilmiş numarası var. Yani, ilk sayı 7 idi eğer, 8 0'dan bir takım oluşturmak ve 7 9 8 ve 8 Harita:

$random1 = (rand() % 10);
$random2 = (rand() % 9);
if $random2 >= $random1 {
    $random2 = $random2 + 1;
}
function random($min, $max) {
    $stack = range($min, $max);
    shuffle($stack); 
    $nr1 = array_pop($stack);
    $nr2 = array_pop($stack);
    return array($nr1, $nr2);
}

Bu bir matematik dehası olmadan işi olabilir :)

Sadece isterseniz unique numbers, sadece sıfırdan başlar ve her yeni sayısı için 1 ekleyin.

Eğer random unique numbers gerekiyorsa, sadece bir listede önceki numaraları kaydetmek ve yeni bir tane gerektiğinde bu listede not, hangi birini bulana kadar, sadece rastgele sayılar üretmek.

Eğer unique identifiers gerekirse, yerleşik fonksiyonunu uniqid kullanabilirsiniz.

Alix Axel çözümü en kolay ve benim için iyi çalıştı. Varolan diziden rasgele üç girişleri istedim, bu yüzden kullanılan

$rands = array_rand(range(0,count($otherarray)),3);

Ve sonra tuşuna $rands oldu hangi girdileri görüntülenir.

$random_numbers = array();
for ($i = 0; $i <= 1; $i++)
{
  $random_numbers[$i] = rand(1,13);
}

Ben döngü için içinde bir dizi iç rand koyarak bunu çözdü. Bu şekilde iki farklı rasgele sayılar var! Iki sayı iki alan, random_numbers[0] ve random_numbers[1] dizinin yerleştirilir

Eğer rastgele yalancı 0 ve kapsayıcı 9 arasında 2 farklı tamsayılar oluşturmak ister gibi oldukça ağır soru yorumlama görünüyor?

Değil kadar ilk tekrar aynı eğer öyleyse, başka oluşturmak, ilk oluşturmak.

Ben bu herhangi bir başka yöntem kadar etkili olacağını, gerekçe olmaksızın, iddia.