我想知道在Windows上使用C#生成几兆字节随机数据的好方法(使用.NET 2.0进行部署,但使用其他选项(如.NET 3.0和Mono库)的其他方法也可能是一些息)。
数据的目的是通过网络连接进行传输,以评估到固定目的地的真实世界网络吞吐量,因此随机性水平并不是很重要 - 尽管数据本身不应该是可以轻易压缩的(例如简单的)一系列重复的字符。)
我可以使用Random,或生成GUID,但我很想知道是否有更好的方法可以做到这一点。例如,在UNIX上是否有类似于/ dev / urandom的东西?
答案 0 :(得分:3)
您可以使用此方法生成随机数字流:
int streamSize = (1024 * 1024) * 15; // Let's make 15 Mbytes of junk
int left = streamSize;
while (left > 0)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider ();
byte[] buffer = new byte[1024];
rng.GetBytes (buffer);
SendBytes (buffer); // Send it to network interface
left -= 1024;
}
答案 1 :(得分:1)
Developer Art的建议很适合获取相当随机的数据 - 但在现实生活中,数据可能不完全随机。我很欣赏它不应该是可压缩的 - 但你真的希望它完全非 - 可压缩吗?
真实世界的网络数据包含各种类型的流量 - 有些是可压缩的,有些则不会。
在我看来,获取真实数据的最佳方法是从现实世界中对其进行采样。你会在现实生活中获得什么样的交通?您是否能够从真实用户(可能是各种不同的用户)中对其进行抽样?