Вчера я задал этот вопрос и так и не получил ответа, которым был очень доволен. Я действительно хотел бы знать, как создать список из N уникальных случайных чисел, используя функциональный язык, такой как Ruby, без необходимости быть крайне обязательным в стиле.
Поскольку я не видел ничего, что мне действительно нравилось, я написал решение, которое искал в LINQ:
static void Main(string[] args)
{
var temp = from q in GetRandomNumbers(100).Distinct().Take(5) select q;
}
private static IEnumerable GetRandomNumbers(int max)
{
Random r = new Random();
while (true)
{
yield return r.Next(max);
}
}
Можете ли вы перевести мой LINQ на Ruby? Python? Любой другой функциональный язык программирования?
Примечание: Пожалуйста, старайтесь не использовать слишком много циклов и условных выражений - в противном случае решение будет тривиальным. Кроме того, я бы предпочел найти решение, в котором вам не нужно генерировать массив, намного больший, чем N, чтобы вы могли затем просто удалить дубликаты и обрезать его до N.
Я знаю, что я привередлив, но мне бы очень хотелось увидеть некоторые элегантные решения этой проблемы.
Спасибо!
Edit:
Почему все отрицательные?
Первоначально мой пример кода имел функцию Distinct () после Take (), которая, как отмечали многие, могла оставить меня с пустым списком. Я изменил порядок, в котором эти методы вызываются, чтобы отразить то, что я имел в виду.
Апология:
Мне сказали, что этот пост показался мне довольно снобистским. Я не пытался сказать, что LINQ лучше Ruby / Python; или что мое решение намного лучше, чем у всех остальных. Я собираюсь научиться делать это (с некоторыми ограничениями) в Ruby. Извините, если я натолкнулся на этого.