Bitwise Random

Random number generation is common in PHP, especially when selecting values within a range like 0-3, 0-7, or 0-15. While rand(min, max) works fine, there’s a faster way using bitwise operations.

🚀 The Bitwise Trick

Instead of:

rand(0, 1);

Use:

rand() & 1;

Need a random number between 0-3?

rand() & 3;

For 0-7?

rand() & 7;

🧠 Why It Works

The & (bitwise AND) operator “masks” a random integer, keeping only the bits you need. If your desired range is a power of 2 (e.g., 2, 4, 8…), subtract 1 and use that number as your bitmask.

Example: To get 0-15, use:

rand() & 15; // 15 = 0b1111

⚡ Why It’s Faster

  • No argument parsing – PHP skips the overhead of reading min and max.
  • Bitwise is faster – Bitwise ops are more efficient than modulo or division.

🧯 When to Use

Use this technique when:

  • The range is a power of 2 (0–1, 0–3, 0–7, 0–15, etc.)
  • You need speed—like in games or high-frequency loops

For non-power-of-two ranges, stick with:

rand(min, max);

🧩 Conclusion

Bitwise random generation is a handy speed hack in PHP. It’s fast, simple, and great for performance-heavy tasks—especially when dealing with powers of two.


🧪 Quiz Time!

1. What’s the main advantage of using rand() & mask over rand(min, max)?

a) It generates truly random numbers b) It reduces argument parsing and simplifies operations c) It allows negative numbers d) It’s only useful for large numbers


2. How do you get a random number between 0 and 15 efficiently using bitwise?

a) rand(0, 15) b) rand() & 15 c) rand() % 16 d) rand() / 16


<
Previous Post
🎲 Generating Random Floats in PHP: A Simple Yet Powerful Technique
>
Next Post
🎂 The Devil’s Number: A Story About William Kahan on His Special Day