Developer Tools for Random Data Generation // v2.6.1
root@generate-random:~/ip-addresses/csharp$ _

Generate Random IP Addresses in C#

Complete code tutorial with examples and best practices

[ Code Example - Quick Summary ]

Language: C#

What: Generate random IPv4 and IPv6 addresses in C# using Random and IPAddress. Includes validation, RFC 1918 private ranges, and integration with Bogus library for .NET testing.

Try it: Use our interactive Ip-addresses generator or integrate this code into your C# application.

Generate random IPv4 and IPv6 addresses in C# using Random and IPAddress. Includes validation, RFC 1918 private ranges, and integration with Bogus library for .NET testing. Looking for other languages? Check our code examples in PHP , JavaScript , Python , Java , C++ , Ruby and Go or use our interactive web generator.

C# Code Example

using System;
using System.Net;
using System.Linq;
using System.Text.RegularExpressions;

public class IpAddressGenerator
{
    private static readonly Random random = new Random();

    // Generate random IPv4 address
    public static string RandomIpv4()
    {
        return $"{random.Next(256)}.{random.Next(256)}.{random.Next(256)}.{random.Next(256)}";
    }

    // Generate random private IPv4 (RFC 1918)
    public static string RandomPrivateIpv4()
    {
        var ranges = new Func<string>[]
        {
            () => $"10.{random.Next(256)}.{random.Next(256)}.{random.Next(256)}",
            () => $"172.{random.Next(16, 32)}.{random.Next(256)}.{random.Next(256)}",
            () => $"192.168.{random.Next(256)}.{random.Next(256)}"
        };
        return ranges[random.Next(ranges.Length)]();
    }

    // Generate random public IPv4
    public static string RandomPublicIpv4()
    {
        string ip;
        do
        {
            ip = RandomIpv4();
        } while (IsPrivateIp(ip));
        return ip;
    }

    // Check if IP is private
    public static bool IsPrivateIp(string ip)
    {
        return Regex.IsMatch(ip, @"^10\.") ||
               Regex.IsMatch(ip, @"^172\.(1[6-9]|2[0-9]|3[01])\.") ||
               Regex.IsMatch(ip, @"^192\.168\.") ||
               Regex.IsMatch(ip, @"^127\.") ||
               Regex.IsMatch(ip, @"^0\.");
    }

    // Generate random IPv6 address
    public static string RandomIpv6()
    {
        var groups = Enumerable.Range(0, 8)
            .Select(_ => random.Next(0x10000).ToString("x4"));
        return string.Join(":", groups);
    }

    // Generate IPv4 with CIDR notation
    public static string RandomIpv4WithCidr(int minCidr = 8, int maxCidr = 32)
    {
        var ip = RandomIpv4();
        var cidr = random.Next(minCidr, maxCidr + 1);
        return $"{ip}/{cidr}";
    }

    // Validate IP address using IPAddress
    public static bool IsValidIp(string ipString)
    {
        return IPAddress.TryParse(ipString, out _);
    }

    // Generate multiple IP addresses
    public static string[] GenerateIpAddresses(int count = 10, string type = "ipv4")
    {
        return Enumerable.Range(0, count)
            .Select(_ => type == "ipv6" ? RandomIpv6() : RandomIpv4())
            .ToArray();
    }

    // Using Bogus library (Install-Package Bogus)
    // using Bogus;
    // var faker = new Faker();
    // string ipv4 = faker.Internet.Ip();
    // string ipv6 = faker.Internet.Ipv6();

    public static void Main()
    {
        Console.WriteLine($"Random IPv4: {RandomIpv4()}");
        Console.WriteLine($"Private IPv4: {RandomPrivateIpv4()}");
        Console.WriteLine($"Public IPv4: {RandomPublicIpv4()}");
        Console.WriteLine($"IPv6: {RandomIpv6()}");
        Console.WriteLine($"IPv4 with CIDR: {RandomIpv4WithCidr()}");
        Console.WriteLine($"Batch: {string.Join(", ", GenerateIpAddresses(5))}");
        Console.WriteLine($"Is valid: {IsValidIp("192.168.1.1")}");
    }
}

[EXPLANATION]

This C# implementation uses Random.Next(256) for generating octets and string interpolation for formatting. The IPAddress class from System.Net provides validation via TryParse(). LINQ's Enumerable.Range() simplifies batch generation. The Bogus library offers Internet.Ip() and Internet.Ipv6() methods, integrating seamlessly with xUnit, NUnit, and MSTest frameworks for .NET testing.

Expected Output

Random IPv4: 198.51.100.42
Private IPv4: 192.168.15.234
Public IPv4: 203.0.113.89
IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv4 with CIDR: 198.51.100.42/24
Batch: 203.0.113.15, 198.51.100.89, 192.0.2.45, 198.51.100.123, 203.0.113.67
Is valid: True

Common Use Cases

  • Generate test data for ASP.NET network applications
  • Mock IP addresses in API integration tests
  • Create sample logs for security monitoring tools
  • Test IP-based rate limiting and access control
  • Populate Entity Framework models with network data

Important Notes

  • IPAddress.TryParse() validates both IPv4 and IPv6 formats
  • For thread-safe random generation, create separate Random instances per thread
  • Bogus library supports fluent syntax for complex test data scenarios
  • System.Net.IPAddress can convert between string and byte array formats
  • Consider using RNGCryptoServiceProvider for cryptographically secure random IPs

Try Our Interactive Generator

Don't want to write code? Use our free web-based Ip-addresses generator with instant results.

TRY IP-ADDRESSES GENERATOR →