def ipv6_generate_random(total=100):
    """
    The generator to produce random, unique IPv6 addresses that are not
    defined (can be looked up using ipwhois).

    Args:
        total (:obj:`int`): The total number of IPv6 addresses to generate.

    Yields:
        str: The next IPv6 address.
    """

    count = 0
    yielded = set()
    while count < total:

        address = str(IPv6Address(random.randint(0, 2**128-1)))

        if not ipv6_is_defined(address)[0] and address not in yielded:

            count += 1
            yielded.add(address)
            yield address