在C#中生成几兆字节的随机数据

时间:2009-12-02 10:27:13

标签: c# .net

我想知道在Windows上使用C#生成几兆字节随机数据的好方法(使用.NET 2.0进行部署,但使用其他选项(如.NET 3.0和Mono库)的其他方法也可能是一些息)。

数据的目的是通过网络连接进行传输,以评估到固定目的地的真实世界网络吞吐量,因此随机性水平并不是很重要 - 尽管数据本身不应该是可以轻易压缩的(例如简单的)一系列重复的字符。)

我可以使用Random,或生成GUID,但我很想知道是否有更好的方法可以做到这一点。例如,在UNIX上是否有类似于/ dev / urandom的东西?

2 个答案:

答案 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的建议很适合获取相当随机的数据 - 但在现实生活中,数据可能完全随机。我很欣赏它不应该是可压缩的 - 但你真的希望它完全 - 可压缩吗?

真实世界的网络数据包含各种类型的流量 - 有些是可压缩的,有些则不会。

在我看来,获取真实数据的最佳方法是从现实世界中对其进行采样。你会在现实生活中获得什么样的交通?您是否能够从真实用户(可能是各种不同的用户)中对其进行抽样?