I'm mencari performant, cukup kuat RNG menggunakan perangkat keras khusus. Hal ini dapat menggunakan metode matematika (Mersenne Twister, dll), hal ini dapat "mengumpulkan entropi" dari mesin, apa pun. Pada Linux/dll kami memiliki drand48()
yang menghasilkan 48 bit acak. I'd seperti mirip fungsi/class C++ atau C# yang dapat menghasilkan lebih dari 32 bit keacakan dan yang low-order bit adalah sama-sama sebagai random sebagai high-order bit.
Itu doesn't harus cryptographically aman tapi itu tidak harus menggunakan atau didasarkan pada bahasa C-rand()
atau .NET Sistem.Random
.
Setiap source code, link ke sumber, dll. akan dihargai! Kegagalan itu, apa JENIS RNG yang harus saya cari?
Untuk C++, Boost.Random mungkin adalah apa yang anda're looking for. Ini memiliki dukungan untuk MT (di antara banyak algoritma lain), dan dapat mengumpulkan entropi melalui nondet_random
kelas. Check it out! :-)
Gnu Ilmiah Perpustakaan (GSL) memiliki cukup banyak RN generator, tes harness, dll. Jika anda're pada linux, it's mungkin sudah tersedia pada sistem anda.
Watch out untuk uji coba Ilmiah Perpustakaan. It's berlisensi di bawah GPL daripada LGPL.
Seperti orang-orang lain disebutkan, Meningkatkan acak kelas ini adalah awal yang baik. Pelaksanaannya sesuai dengan PRNG kode dijadwalkan untuk TR1:
http://www.boost.org/doc/libs/1_35_0/libs/random/index.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html
Jika anda memiliki versi terbaru dari G++ compiler, anda mungkin menemukan TR1 perpustakaan sudah termasuk
C++11 telah mengadopsi kuat random number perpustakaan yang didasarkan pada dorongan.acak. Anda dapat mengakses sejumlah nomor acak engine menggunakan algoritma yang berbeda untuk memenuhi kualitas, kecepatan, atau persyaratan ukuran. Kualitas implementasi akan memiliki akses ke fasilitas non-deterministik RNG platform ini melalui std::random_device
.
Selain itu ada banyak adaptor untuk menghasilkan distribusi tertentu, menghilangkan kebutuhan untuk melakukan manipulasi dengan tangan (sesuatu yang sering dilakukan secara tidak benar).
Boost.Random
adalah pilihan pertama saya untuk RNG