Sağlam Rastgele Sayı Üretme

oy
34

Ben hiçbir özel donanım kullanarak bir performant, makul sağlam RNG arıyorum. Bu, o her neyse makineden entropi toplamak matematiksel yöntemler (Mersenne Twister, vb) kullanabilir. Vb Linux / biz bir var drand48()48 rastgele bit üretir. Ben düşük bitler yüksek bitleri eşit olarak rastgeledir rastgelelik ve birden fazla 32 olan bitlerin yerini doldurabilmektedir benzer bir işlev / C sınıfı ++ veya C # istiyorum.

Bu kriptografik olmak zorunda değildir ama kullanmamalıdır veya C-dili dayanmalıdır rand()veya .NET System.Random.

Herhangi kaynak kodu, kaynak bağlantıları, vb mutluluk duyacağız! , RNG hangi TİP aradığım gerektiğini Başarısız?

Oluştur 03/08/2008 saat 03:05
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
27

C ++ için Boost.Random aradığınız şey muhtemelen. O (diğer birçok algoritmalar arasında) MT için desteği vardır ve üzeri entropi toplayabilir nondet_randomsınıfa. Buna bir bak! :-)

Cevap 03/08/2008 saat 03:18
kaynak kullanıcı

oy
8

Gnu Bilimsel Kütüphanesi (GSL) Eğer linux üzerinde iseniz, büyük ihtimalle sistemde zaten mevcut olan RN jeneratörler, deney koşum, vb oldukça geniş grubu vardır.

Cevap 03/08/2008 saat 03:26
kaynak kullanıcı

oy
7

Gnu Bilimsel Kütüphanesi dikkat edin. Bu GPL yerine LGPL altında lisanslıdır.

Diğer millet belirtildiği gibi, Boost rastgele sınıflar iyi bir başlangıç. Bunların uygulanması TR1 hedefleniyor PRNG koduna uygundur:

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

Eğer G ++ derleyici son sürümlerinden varsa, zaten dahil TR1 kitaplıkları bulabilirsiniz

Cevap 13/08/2008 saat 19:08
kaynak kullanıcı

oy
5

++ 11C boost.random göre sağlam bir rasgele sayı kütüphanesi benimsemiştir. Eğer kalite, hız, veya boyut gereksinimlerini karşılamak üzere farklı algoritmalar kullanılarak rasgele sayı motorları bir dizi erişebilirsiniz. Kalite uygulamaları bile platformu aracılığıyla sunduğu her neyse olmayan deterministik RNG erişim sağlayacaktır std::random_device.

Ayrıca elle böyle manipülasyon yapmak gereğini (genellikle yanlış yapılan bir şey) ortadan kaldırarak belirli dağılımları üretmek için birçok adaptörleri vardır.

#include <random>

Cevap 26/06/2012 saat 17:05
kaynak kullanıcı

oy
2

Boost.Random ilk tercihim RNG içindir

http://www.boost.org/doc/libs/random

Cevap 29/03/2012 saat 11:32
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more