#!/usr/bin/perl use warnings; use strict; use Math::Combinatorics; my @n = (0..99); my $cmb = Math::Combinatorics->new(count => 2, data => [@n]); my %numbers; $numbers{$_} = [] for @n; while (my ($x,$y) = $cmb->next_combination) { # never returns $x == 99, so $numbers{99} will be always empty :( push $numbers{$x},$y; } print "($_,",$numbers{$_}->[int(rand($#{$numbers{$_}}+1))],")\n" for @n;