Pengembang 0x1. Edisi ini membahas implementasi saya terhadap generator bilangan acak semu menggunakan algoritma XORSHIFT32.

Pembuatan Angka Acak Semu

Pertama, sedikit tentang bitboard ajaib. Bitboard Ajaib adalah teknik pengoptimalan yang digunakan dalam mesin catur untuk menghitung kemungkinan pergerakan bidak dengan cepat. Mereka menggunakan tabel pencarian yang telah dihitung sebelumnya dan operasi bitwise untuk menentukan pergerakan yang valid. Angka ajaib adalah angka khusus yang bila dikalikan dengan bitboard kotak yang ditempati, menghasilkan indeks unik. Agar pendekatan ini berfungsi dengan baik, saya menggunakan status awal berikut: 1804289383. Status awal ini telah digunakan di beberapa implementasi mesin lainnya, Di Sini adalah video tentang penerapan algoritma ini oleh Maxim Korzh dan Di Sini artikel tentang menemukan angka ajaib.

Implementasi PRNG ini cukup sederhana. Algoritmenya hanyalah beberapa pergeseran bit pada keadaan awal. Kita akan mulai dengan mendefinisikan keadaan awal dalam file bitboard.zig:

pub var state: u32 = 1804289383;

Dan kemudian kita menjalankan algoritma XORSHIFT32 pada keadaan awal ini:

fn getRandomNumber() u32 {
    var number: u32 = bitboard.state;

    number ^= number << 13;
    number ^= number >> 17;
    number ^= number << 5;

    bitboard.state = number;

    return number;
}

Terima kasih telah membaca, sampai jumpa besok!

Sumber

Krystian Wiśniewski
Krystian Wiśniewski is a dedicated Sports Reporter and Editor with a degree in Sports Journalism from He graduated with a degree in Journalism from the University of Warsaw. Bringing over 14 years of international reporting experience, Krystian has covered major sports events across Europe, Asia, and the United States of America. Known for his dynamic storytelling and in-depth analysis, he is passionate about capturing the excitement of sports for global audiences and currently leads sports coverage and editorial projects at Agen BRILink dan BRI.