Bagaimana cara mengacak di php?

PHP 8. 2 memperkenalkan ekstensi PHP baru bernama

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_9, yang mengatur dan mengkonsolidasikan fungsionalitas PHP yang ada terkait dengan pembuatan angka acak, dan memperkenalkan serangkaian struktur kelas PHP dan kelas pengecualian untuk menyediakan pilihan granular generator angka acak dan penanganan pengecualian

Ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 dibundel dengan PHP, dan tidak ada opsi konfigurasi waktu kompilasi atau waktu proses untuk menonaktifkan ekstensi
$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9. Ekstensi
$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 akan selalu tersedia di PHP 8. 2 dan selanjutnya

Ada beberapa perubahan yang dibuat pada fungsionalitas pembuatan nomor acak yang seharusnya tidak menyebabkan masalah kompatibilitas mundur di seluruh versi PHP. Namun, perhatikan bahwa aplikasi dan alat PHP yang memeriksa fungsi terkait nomor acak PHP (misalnya, menggunakan

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
3 atau
namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
4 dari Reflection APIs) mungkin mendapatkan hasil yang berbeda di PHP 8. 2 dan selanjutnya. Namun, skenario ini cukup khusus dan tidak mungkin menyebabkan masalah apa pun dalam aplikasi PHP biasa


Menguji Keacakan Fungsi Angka Acak PHP
Memvisualisasikan dan menguji berbagai Generator Angka Acak yang tersedia di PHP


PHP memiliki beberapa fungsi dalam pustaka standarnya yang menghasilkan angka acak. Di PHP8. 2, beberapa fungsi PHP dipindahkan ke ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 yang baru. Semua fungsi terus berada di namespace global. Karena ekstensi
$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_9 selalu disertakan saat kompilasi PHP, seharusnya tidak ada perbedaan praktis dalam aplikasi PHP

Fungsi dan konstanta berikut sekarang dipindahkan ke ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9

  • namespace Random;
    
    interface Engine {
        public function generate(): string;
    }
    
    interface CryptoSafeEngine extends Engine {
    }
    _6 fungsi
  • namespace Random;
    
    interface Engine {
        public function generate(): string;
    }
    
    interface CryptoSafeEngine extends Engine {
    }
    _7 fungsi
  • namespace Random;
    
    interface Engine {
        public function generate(): string;
    }
    
    interface CryptoSafeEngine extends Engine {
    }
    _8 fungsi
  • namespace Random;
    
    interface Engine {
        public function generate(): string;
    }
    
    interface CryptoSafeEngine extends Engine {
    }
    _9 fungsi
  • namespace Random\Engine;
    
    final class Mt19937 implements \Random\Engine {
        public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
        public function generate(): string {}
        public function __serialize(): array {}
        public function __unserialize(array $data): void {}
        public function __debugInfo(): array {}
    }
    0 fungsi
  • namespace Random\Engine;
    
    final class Mt19937 implements \Random\Engine {
        public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
        public function generate(): string {}
        public function __serialize(): array {}
        public function __unserialize(array $data): void {}
        public function __debugInfo(): array {}
    }
    1 fungsi
  • namespace Random\Engine;
    
    final class Mt19937 implements \Random\Engine {
        public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
        public function generate(): string {}
        public function __serialize(): array {}
        public function __unserialize(array $data): void {}
        public function __debugInfo(): array {}
    }
    2 fungsi
  • namespace Random\Engine;
    
    final class Mt19937 implements \Random\Engine {
        public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
        public function generate(): string {}
        public function __serialize(): array {}
        public function __unserialize(array $data): void {}
        public function __debugInfo(): array {}
    }
    3 fungsi
  • namespace Random\Engine;
    
    final class Mt19937 implements \Random\Engine {
        public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
        public function generate(): string {}
        public function __serialize(): array {}
        public function __unserialize(array $data): void {}
        public function __debugInfo(): array {}
    }
    4 fungsi
  • konstan
  • konstan

Meskipun fungsionalitas fungsi-fungsi di atas tidak berubah (selain penggunaan random-specific baru), perubahan ini dapat diamati dari Reflection API. Sejak PHP 8. 2, ekstensi

namespace Random\Engine;

final class Mt19937 implements \Random\Engine {
    public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
    public function generate(): string {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
_9 mengembalikan ekstensi
$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 alih-alih ekstensi
namespace Random\Engine;

final class PcgOneseq128XslRr64 implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(int $advance): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
1 sebelumnya

 $reflector = new ReflectionFunction('random_int');
 $reflector->getExtension()->getName();
- // "standard"
+ // "random"

Mengikuti kebijakan namespace PHP yang diadopsi, semua fungsionalitas baru yang diperkenalkan di ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 ditambahkan ke namespace baru yang disebut
namespace Random\Engine;

final class PcgOneseq128XslRr64 implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(int $advance): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
2

Namespace

namespace Random\Engine;

final class PcgOneseq128XslRr64 implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(int $advance): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
2 dicadangkan untuk ekstensi. Aplikasi PHP yang ada yang menggunakan namespace
namespace Random\Engine;

final class PcgOneseq128XslRr64 implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(int $advance): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
2 dapat terus menggunakannya, selama tidak ada konflik dengan yang baru , , dan ditambahkan di PHP 8. 2

Salah satu tambahan baru terpenting dengan ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 yang baru adalah kelas
namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
7. Ini dimaksudkan untuk menyediakan API berorientasi objek untuk mengakses semua fungsi pembuatan Angka Acak dengan pilihan algoritma Pseudo Random Number Generator, yang dapat ditukar dengan implementasi baru

Berikut ini adalah contoh yang menghasilkan nomor acak menggunakan kelas

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
7 yang baru

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"

Untuk contoh terperinci, lihat bagian

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
_7 sinopsis

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
_

PHP 8. 2 menambahkan dukungan untuk beberapa algoritma Pseudo Random Number Generator (mesin PRNG). kelas menerima implementasi PRNG apa pun yang menyediakan antarmuka berorientasi objek untuk menghasilkan angka dan byte acak, array acak, dan secara acak memilih elemen dari array dengan mesin PRNG yang diberikan

Ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 menyediakan antarmuka
namespace Random\Engine;

final class Xoshiro256StarStar implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(): void {}
    public function jumpLong(): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
4 yang harus diterapkan oleh semua kelas mesin PRNG. Selain itu, ada antarmuka
namespace Random\Engine;

final class Xoshiro256StarStar implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(): void {}
    public function jumpLong(): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
_5 yang memperluas antarmuka
namespace Random\Engine;

final class Xoshiro256StarStar implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(): void {}
    public function jumpLong(): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
4 untuk kelas mesin PRNG yang aman untuk operasi kriptografi

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
_

Ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 menyediakan empat
namespace Random\Engine;

final class Xoshiro256StarStar implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(): void {}
    public function jumpLong(): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
4 implementasi bawaan. Semua implementasi ini adalah
namespace Random\Engine;

final class Xoshiro256StarStar implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(): void {}
    public function jumpLong(): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
9 kelas

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
_8 adalah kelas PHP bawaan yang mengimplementasikan antarmuka. Ini menggunakan Mersenne Twister Random Number Generator yang sama dengan fungsi
namespace Random\Engine;

final class Mt19937 implements \Random\Engine {
    public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
    public function generate(): string {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
2. Dimungkinkan juga untuk menyemai algoritme dengan nilai arbitrer saat kelas dibuat instance-nya. Mesin ini tidak cocok untuk aplikasi yang aman secara kriptografis karena keadaan internal RNG dapat diturunkan dengan mengamati nilai keluaran berurutan

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
_8 sinopsis

namespace Random\Engine;

final class Mt19937 implements \Random\Engine {
    public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
    public function generate(): string {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}

Kelas

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
_9 menyediakan implementasi generator kongruensial Permutasi. Mesin ini tidak cocok untuk aplikasi yang aman secara kriptografis

namespace Random;

final class Randomizer {

    public readonly Engine $engine;

    public function __construct(?Engine $engine = null) {}

    public function nextInt(): int {}

    public function getInt(int $min, int $max): int {}

    public function getBytes(int $length): string {}

    public function shuffleArray(array $array): array {}

    public function shuffleBytes(string $bytes): string {}

    public function pickArrayKeys(array $array, int $num): array {}

    public function __serialize(): array {}

    public function __unserialize(array $data): void {}

}
_9 sinopsis

namespace Random\Engine;

final class PcgOneseq128XslRr64 implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(int $advance): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
0 kelas menyediakan implementasi Xoshiro PRNG di PHP. Meskipun mesin
namespace Random;

class RandomError extends \Error {}

class BrokenRandomEngineError extends RandomError {}

class RandomException extends \Exception {}
_0 tidak cocok untuk aplikasi yang aman secara kriptografis, ini adalah yang tercepat di antara mesin yang disediakan karena kesederhanaannya, menjadikannya kandidat yang baik untuk aplikasi yang perlu mengacak kumpulan data (seperti mengacak tayangan slide)

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
_0 sinopsis

namespace Random\Engine;

final class Xoshiro256StarStar implements \Random\Engine {
    public function __construct(string|int|null $seed = null) {}
    public function generate(): string {}
    public function jump(): void {}
    public function jumpLong(): void {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}

Kelas

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
_1 menyediakan implementasi yang sama dengan fungsi
namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
6 dan
namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
7, dan direkomendasikan untuk digunakan untuk semua pembuatan angka acak, termasuk juga aman untuk operasi kriptografi

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
_1 sinopsis

namespace Random\Engine;

final class Secure implements \Random\CryptoSafeEngine {
    public function generate(): string {}
}

Sebagai bagian dari perubahan dan pengenalan ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_9 baru, ada jenis Pengecualian dan Kesalahan baru. Mesin PRNG dan kelasnya, dan fungsi penghasil angka acak yang ada memberikan Pengecualian dan Kesalahan yang lebih terperinci di PHP 8. 2 dan selanjutnya

namespace Random;

class RandomError extends \Error {}

class BrokenRandomEngineError extends RandomError {}

class RandomException extends \Exception {}

Hirarki Pengecualian PHP
Daftar semua pengecualian dan kesalahan PHP saat ini dalam urutan hierarkis

Sejak PHP 8. 2 dan yang lebih baru,

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
7,
namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
6, dan fungsi lain yang sudah ada dapat membuang
$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
1,
$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
2, dan
$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
3 pengecualian jika berlaku. Namun, ini tidak mungkin menimbulkan masalah kompatibilitas mundur karena Pengecualian dan Kesalahan baru jenis
$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
4 basis
namespace Random\Engine;

final class Mt19937 implements \Random\Engine {
    public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
    public function generate(): string {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
8 dan
namespace Random\Engine;

final class Mt19937 implements \Random\Engine {
    public function __construct(int|null $seed = null, int $mode = MT_RAND_MT19937) {}
    public function generate(): string {}
    public function __serialize(): array {}
    public function __unserialize(array $data): void {}
    public function __debugInfo(): array {}
}
7 kelas

Berikut adalah beberapa contoh penggunaan kelas

$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
_7 baru dengan berbagai mesin, serta beberapa pola penggantian


Menghasilkan angka acak antara 1 dan 100

$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42

Kocok sebuah string

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
0

Perhatikan bahwa metode

$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
_8 melakukan persis seperti yang tertulis di namanya. mengocok byte. Untuk karakter multi-byte, ini menghasilkan teks terdistorsi/Mojibake


Kocok sebuah array

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_1

Menggunakan

$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
_9 Mesin

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_2

Menggunakan

$randomizer = new Random\Randomizer();
$randomizer->getInt(1, 100); // 42
_9 Mesin dengan benih

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_3

Menggunakan

namespace Random;

class RandomError extends \Error {}

class BrokenRandomEngineError extends RandomError {}

class RandomException extends \Exception {}
_0 Mesin dengan benih

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_4

Menggunakan

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_02 Mesin dengan benih

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
5

Menggunakan Mesin tiruan yang mengembalikan nilai yang sama, untuk digunakan dalam pengujian unit

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_6

Mengganti

namespace Random;

interface Engine {
    public function generate(): string;
}

interface CryptoSafeEngine extends Engine {
}
6 panggilan

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_7

Dampak Kompatibilitas Mundur

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_9 adalah ekstensi baru yang ditambahkan ke PHP. Aplikasi PHP yang ada seharusnya tidak menyebabkan masalah apa pun di PHP 8. 2 dan selanjutnya sehubungan dengan perubahan yang terkait dengan ekstensi
$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9. Namun, berhati-hatilah saat menggunakan [kelas Pengecualian dan Kesalahan baru] karena versi PHP yang lebih lama memberikan lebih banyak pengecualian umum pada kondisi yang sama

Dimungkinkan untuk mem-port bagian dari fungsionalitas baru ini ke versi PHP yang lebih lama sebagai polyfill, tetapi dan akan sangat sulit untuk mem-back-port karena PRNG yang mendasari secara komputasi sulit untuk ditiru. Misalnya,

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
_02 adalah mesin 128 bit tanpa tanda tangan, yang sulit ditiru pada bilangan bulat 64 bit


Artikel ini diperbarui dengan dukungan dan masukan dari Tim Düsterhus, salah satu pengelola ekstensi

$r = new Random\Randomizer();
echo $r->getInt(1, 100); // 42
echo $r->shuffleBytes('lorem ipsum'); // "ols mpeurim"
9 yang baru

Bagaimana cara mendapatkan nomor acak di PHP?

rand() adalah fungsi bawaan dalam PHP yang digunakan untuk menghasilkan angka acak yaitu. , ini dapat menghasilkan nilai integer acak dalam rentang [min, max]. Sintaksis. rand(); .

Bagaimana cara membuat nomor yang dibuat secara otomatis di PHP?

rand() metode untuk Pembuatan Angka Acak . jadi tidak perlu melakukan apa-apa pada saat itu karena kami belum memberikan argumen kami

Bagaimana Anda mengacak kode?

Contoh .
Angka acak antara 0 dan 100. nilai = rand() * 100;
A Acak benar atau salah. keputusan = (rand() >. 5);
Angka acak antara 50 dan 100. x = (rand() * 50) + 50;
Bilangan bulat acak antara 1 dan 10. Untuk mendapatkan bilangan bulat dari nilai floating point kita bisa menggunakan fungsi seperti round atau ceil atau floor

Bagaimana cara menghasilkan 10 digit angka acak di PHP?

rand() atau mt_rand() dapat digunakan untuk Menghasilkan 10 Digit Angka Acak dalam PHP.